標籤:src mod users rip jmx pull sso water class
預設情況下,mongo的修改只會修改找出來的第一條資料,如果要修改查詢匹配的所有記錄,必須使用multi那個參數。
修改的操作符說明:
$inc 以給定的值增長某個欄位;
$set 替換給定的索引值;
$push 如果欄位是一個數組,將把給定的值添加到數組欄位內,如果不存在,將自動添加,如果欄位非數組,將報出錯誤提示;
$pushAll 跟push類似,只不過參數為數組;
$unset 刪除一個欄位
$addToSet 跟push類似,只不過如果值已經存在,則不會添加;
$pop 移除某個數組欄位的第一個值或最後一個值,根據1或-1區分;
$pull 如果欄位是一個數組,可以用這個操作符移除數組內滿足條件的值;
$pullAll 跟pull類似,只不過參數為數組;
$rename 修改欄位的名字;
執行個體:
達到最終效果: users(collection)
[javascript] view plain copy
- {
- _id : ObjectId("50897dbb9b96971d287202a9"),
- name : "Jane",
- age:20,
- likes : [ "tennis", "golf" ],
- registered : false,
- addr : {
- city : "Lyon",
- country : "France"
- }
- }
為了實踐update的不同命令,先插入基本
[javascript] view plain copy
- db.users.insert({name:"Jane",age:10})
db.users.update(query,obj,upsert,multi)
參數分別為 query查詢條件{name:"Jane"} ; obj更改對象 ;upsert 更新還是插入(布爾值); multi(是否多行更新)
在命令中輸入 db.users.update 可以直接查看update函數的實現邏輯
實際upsert可以為object 即{upsert:true,multi:true}
1、$inc 為某個欄位的增加指定的值 value=old+inc; 操作欄位不許為數字
[javascript] view plain copy
- db.users.update({name:"Jane"},{$inc:{age:10}})
2、$set 替換原有欄位值
[javascript] view plain copy
- db.users.update({name:"Jane"},{$set:{age:20}})
3、$push,$pushAll 將資料加入欄位數組中
[javascript] view plain copy
- db.users.update({name:"Jane"},{$pushAll:{like:["golf"]}})
剩餘的指令都是一個道理 再次我就不寫了
最後還出現了一個問題,就是 addr欄位,如果我只給其添加了一個city : "Lyon",那麼county如果更新呢?
類似 ,addr欄位缺少一個county:"France",該如何添加呢?
問題先放那 我去查查資料 解決了再補上
python 操作mongoDB指令