使用修改器時,"_id"的值不能改變!文檔替換是能夠的! 數組
1 Inc 排序
{"$inc":{"field":1}} 隊列
2 $set rem
{"$set":{"field":"value"}} 文檔
3 $unset---刪除鍵 it
{"$unset":{"field":1}} date
4 添加數組元素 查詢
{"$push":{"key":"value"}} sort
5 push的高級玩法 集合
{"$push":{"key":{"$each":[value1,value2,value3]}}}
6 push時保證最大長度 ,保留最後幾個
{"$push":{"key": {"$each":[value1,value2,value3], "$slice": -10 } }}
只包含最後加入的10個元素,$slice的值必須爲負整數,這樣就能夠作隊列!
7 push時保證最大長度,根據排序規則保留
{"$push":{"key": {"$each":[value1,value2,value3], "$slice": -10 ,"$sort": {"field":-1} } }}根據規則排序,而後保留前10個!
注意:不能只將slice或者sort與push使用,且必須使用each.
================================================
8保證數組內不包含某個元素才插入
先查詢{"key": {"$ne":"value"} }
不包含的意思,針對數組
9 若是$ne行不通,就使用$addToSet ,避免重複插入
update({...}, {"addToSet":{"key":"value"}} )
10使用$addToSet一次添加多個
update({...}, {"addToSet":{"key": {"$each":"value1","value2"}}} )
11 從數組尾部刪除元素
{ "$pop":{"key":1} }
12 從數組頭部刪除
{ "$pop":{"key": -1} }
13 使用pull刪除某個值,針對數組
update({}, {"$pull":{"key":"value"}})
會刪除全部匹配的item!
14 數組位置絕對定位
update( {...}, { "$inc": {"comments.0.votes": 1}})
15 使用定位操做符$
update( {...查詢條件}, { "$inc": {"comments.$.votes": 1}})
只更新第一個匹配的元素!
16對於upsert控制增長/修改的行爲
{"$setOnInsert":{"key":"value"}}
17 關於findAndModify
findAndModify---集合名
query---查詢條件
sort---排序條件
update---修改器,update/remove必須指定1個。
remove---true/false,表示是否刪除文檔,update/remove選1個。
new---布爾類型,表示返回更新前的文檔仍是更新後的文檔。默認是更新前的文檔。
fields---文檔中須要返回的字段。
upsert---true/false
若是沒有匹配的文檔,則返回錯誤!