1).$set
$set用来修改指定键的值(也可以是内嵌文档的键),如果这个键不存在就创建它,如:
> db.people.find()
{ "_id" : ObjectId("53a3b0e633c516902a43a790"), "name" : "mary", "age" : 30, "country" : "US", "school" : { "name" : "BeijingUniversity", "city" : "Beijing" } }
> db.people.update({"name" : "mary"}, {"$set" : {"age" : 20, "school.name" : "QinghuaUniversity"}})
> db.people.find()
{ "_id" : ObjectId("53a3b0e633c516902a43a790"), "name" : "mary", "age" : 20, "country" : "US", "school" : { "name" : "QinghuaUniversity", "city" : "Beijing" } }
2).$unset
$unset用来将键完全删除,如:
> db.people.find()
{ "_id" : ObjectId("53a3a1c1abda49d7dfce102d"), "name" : "mary", "age" : 20, "country" : "US" }
> db.people.update({"name" : "mary"}, {"$unset" : {"country" : 1}})
> db.people.find()
{ "_id" : ObjectId("53a3a1c1abda49d7dfce102d"), "age" : 20, "name" : "mary" }
3).$inc
$inc用来增加已有键的值,当键不存在时创建这个键,再在初始值0的基础上再增加,$inc对应的键必须是数字类型的,如果是别的数据类型就会报错,如:
> db.people.find()
{ "_id" : ObjectId("53a3b0e633c516902a43a790"), "age" : 20, "country" : "US", "name" : "mary" }
> db.people.update({"name" : "mary"}, {"$inc" : {"age" : 1}})
> db.people.find()
{ "_id" : ObjectId("53a3b0e633c516902a43a790"), "age" : 21, "country" : "US", "name" : "mary" }
> db.people.update({"name" : "mary"}, {"$inc" : {"age" : -2}})
> db.people.find()
{ "_id" : ObjectId("53a3b0e633c516902a43a790"), "age" : 19, "country" : "US", "name" : "mary" }
> db.people.update({"name" : "mary"}, {"$inc" : {"country" : 2}})
Cannot apply $inc modifier to non-number
4).$push,$pushAll
$push用来对内置数组的操作,给内置数组添加元素,$push是添加一个元素,$pushAll是添加一个数组,如:
> db.people.find()
{ "_id" : ObjectId("53a3b47733c516902a43a791"), "name" : "mary", "friends" : [ "amy", "join" ] }
> db.people.update({"name" : "mary"}, {"$push" : {"friends" : "joe"}})
> db.people.find()
{ "_id" : ObjectId("53a3b47733c516902a43a791"), "friends" : [ "amy", "join", "joe" ], "name" : "mary" }
> db.people.update({"name" : "mary"}, {"$push" : {"friends" : ["jodan", "mical"]}})
> db.people.find()
{ "_id" : ObjectId("53a3b47733c516902a43a791"), "friends" : [ "amy", "join", "joe", [ "jodan", "mical" ] ], "name" : "mary" }
5).$addToSet,$each
$addToSet用来给内置数组添加元素,如果数组中已经存在相同值的元素,就不添加,用来避免重复,通常和$each组合使用,$each后面跟一个数组用来添加该数组中的元素如:
> db.people.find()
{ "_id" : ObjectId("53a3c18533c516902a43a794"), "friends" : [ "amy" ], "name" : "mary" }
> db.people.update({"name" : "mary"}, {"$addToSet" : {"friends" : "join"}})
> db.people.find()
{ "_id" : ObjectId("53a3c18533c516902a43a794"), "friends" : [ "amy", "join" ], "name" : "mary" }
> db.people.update({"name" : "mary"}, {"$addToSet" : {"friends" : {"$each" : ["amy", "join", "jodan"]}}})
> db.people.find()
{ "_id" : ObjectId("53a3c18533c516902a43a794"), "friends" : [ "amy", "join", "jodan" ], "name" : "mary" }
6).$pull,$pullAll
$pull用来删除内置数组中的某元素,$pullAll删除某几个元素,如:
db.people.find()
{ "_id" : ObjectId("53a3c18533c516902a43a794"), "name" : "mary", "friends" : [ "amy", "join", "jodan", "mical" ] }
> db.people.update({"name" : "mary"}, {"$pull" : {"friends" : "amy"}})
> db.people.find()
{ "_id" : ObjectId("53a3c18533c516902a43a794"), "friends" : [ "join", "jodan", "mical" ], "nam