1.$set 增加一个键
> db.foobar.find(){ "_id" : ObjectId("53bcbcdf683a68fb76101910"), "age" : 77, "relationships" : { "friends" : 27, "enemies" : 17 }, "username" : "dai" }> db.foobar.update({"username":"dai"},{"$set":{"age":50}} )WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find(){ "_id" : ObjectId("53bcbcdf683a68fb76101910"), "age" : 50, "relationships" : { "friends" : 27, "enemies" : 17 }, "username" : "dai" }
2.$unset 删除一个键
> db.foobar.find(){ "_id" : ObjectId("53bcbcdf683a68fb76101910"), "age" : 50, "relationships" : { "friends" : 27, "enemies" : 50 }, "username" : "daiweiwei" }> db.foobar.update({"_id":ObjectId("53bcbcdf683a68fb76101910")},{"$unset":{"user name":1}} )WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find(){ "_id" : ObjectId("53bcbcdf683a68fb76101910"), "age" : 50, "relationships" : { "friends" : 27, "enemies" : 50 } }
3.$inc 增加已有键的值,或者在键不存在时创建一个键,只能用于整形长整行/双精度浮点型
> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 }> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{"$inc":{"score":30}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 30 }> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{"$inc":{"score ":3}}) 注意score的变化WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33 }
4.数组修改器,不仅可以通过索引进行引用列表,而且可以作为集合使用,
4.1$pop 从数组中弹出,通过{$pop:{key : 1 } }从数组尾删除一个元素
{$pop:{key : -1 } }从数组头部删除
> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ { "1" : 1, "2" : 2, "3" : 3 }, { "1" : 1, "2" : 2, "4 " : 4 } ] }> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{$pop: {"book": 1}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ { "1" : 1, "2" : 2, "3" : 3 } ] }> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 1, 2, 3, 4, 5 ] }> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{$pop: {"book": -1}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 2, 3, 4, 5 ] }
4.2.$push 指定的键如果存在,则在数组末尾添加元素,如果没有则创建一个数组,要是$push成为了瓶颈,可以将内嵌数组独立出来,放到单独的一个集合里。
4.3.$addToSet添加新的元素到数组时可以避免重复> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{$push: {"book":{"1":1,"2":2,"3":3}}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ { "1" : 1, "2" : 2, "3" : 3 } ] }
4.4$each如果想添加多个元素可以组合"$each"> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 1 ] }> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{$push: {"book" :2}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 1, 2 ] }> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{$addToSet: {"book":2}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 1, 2 ] }> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{$addToSet: {"book":3}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 1, 2, 3 ] }
> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 1, 2, 3 ] }> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{$addToSet: {"book":{"$each":[4,2,3,1,5,6]}}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 1, 2, 3, 4, 5, 6 ] }
4.5$pull删除数组特定值的元素
4.6$ 数组的定位修改器> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 3, 4, 2, 1, 5, 6, 7, 8, 9 ] }> db.foobar.update({"_id": ObjectId("53bcda12683a68fb76101911")},{$pull: {"book" : 1}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.foobar.find({"_id": ObjectId("53bcda12683a68fb76101911")}){ "_id" : ObjectId("53bcda12683a68fb76101911"), "name" : "daiweiwei", "age" : 17 , "score" : 33, "book" : [ 3, 4, 2, 5, 6, 7, 8, 9 ] }