使用修改器时,"_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
若是没有匹配的文档,则返回错误!