{ "_id" : 5, "name" : "user5","age" : 5 }
{ "_id" : 6, "name" : "user6","age" : 6 }
> db.user.update({name:"user2"},{$inc:{age:10}}) /*将name为user2的年龄age加上10 */
> db.user.find()
{ "_id" : 2, "name" : "user2","age" : 12 }
{ "_id" : 3, "name" : "user3","age" : 3 }
{ "_id" : 4, "name" : "user4","age" : 4 }
{ "_id" : 5, "name" : "user5","age" : 5 }
{ "_id" : 6, "name" : "user6","age" : 6 }
> db.user.update({name:"user6"},{$inc:{age:-4}}) /*将name为user6的年龄age加上-4,也就是减去4*/
> db.user.find()
{ "_id" : 2, "name" : "user2","age" : 12 }
{ "_id" : 3, "name" : "user3","age" : 3 }
{ "_id" : 4, "name" : "user4","age" : 4 }
{ "_id" : 5, "name" : "user5","age" : 5 }
{ "_id" : 6, "name" : "user6","age" : 2 }
$set
语法:db.collection.update({ field: value1 }, { $set: { field1: value2 } } );
当文档中包含该字段的时候,更新该字段值为value2,如果该文档中没有该字段,则为本文档添加一个字段file1,并为其赋值给value2。
> db.user.find()
{ "_id" : 2, "name" : "user2","age" : 12 }
{ "_id" : 3, "name" : "user3","age" : 3 }
{ "_id" : 4, "name" : "user4","age" : 4 }
{ "_id" : 5, "name" : "user5","age" : 5 }
{ "_id" : 6, "name" : "user6","age" : 2 }
> db.user.update({name:"user2"},{$set:{age:20}}) /*将name为user2的age设置为20 */
> db.user.find()
{ "_id" : 2, "name" : "user2","age" : 20 }
{ "_id" : 3, "name" : "user3","age" : 3 }
{ "_id" : 4, "name" : "user4","age" : 4 }
{ "_id" : 5, "name" : "user5","age" : 5 }
{ "_id" : 6, "name" : "user6","age" : 2 }
> db.user.update({name:"user2"},{$set:{sex:"nan"}})/*将name为user2的sex设置为nan,但是没有该字段,所以为该文档添加sex字段并赋值为nan */
> db.user.find()
{ "_id" : 3, "name" : "user3","age" : 3 }
{ "_id" : 4, "name" : "user4","age" : 4 }
{ "_id" : 5, "name" : "user5","age" : 5 }
{ "_id" : 6, "name" : "user6","age" : 2 }
{ "_id" : 2, "age" : 20, "name" :"user2", "sex" : "nan" }
$unset
语法:db.collection.update({ field: value1 }, { $unset: { field1:
参数arg可以使用true或者空字符串””,这样都会删除一个字段。
> db.user.find()
{ "_id" : 3, "name" : "user3","age" : 3 }
{ "_id" : 4, "name" : "user4","age" : 4 }
{ "_id" : 5, "name" : "user5","age" : 5 }
{ "_id" : 6, "name" : "user6","age" : 2 }
{ "_id" : 2, "age" : 20, "name" :"user2", "sex" : "nan" }
> db.user.update({name:"user2"},{$unset:{sex:1}}) /*删除name为user2的sex字段.如果删除一个不存在的字段,并不会报错,没有什么效果 */
> db.user.find()
{ "_id" : 3, "name" : "user3","age" : 3 }
{ "_id" : 4, "name" : "user4","age" : 4 }
{ "_id" : 5, "name" : "user5","age" : 5 }
{ "_id" : 6, "name" : "user6","age" : 2 }
{ "_id" : 2, "age" : 20, "name" :"user2" }
$rename
语法:{$rename: {
为文档中的一个或者多个字段改名。
> db.test.find()
{ "_id" : 1, "ary" : [ 3, 4, 5, [ 6, 7 ], 9 ]}
{ "_id" : 2, "ary" : [ 6 ], "text" :"test" }
> db.test.update({_id:1},{$rename:{ary:"aryNew"}})
> db.test.find()
{ "_id" : 1, "aryNew" : [ 3, 4, 5, [ 6, 7 ], 9 ]}
{ "_id" : 2, "ary" : [ 6 ], "text" :"test" }
$setOnInsert
语法:db.collection.update(
{ $setOnInsert:{
{upsert: true }
)
$setOnInsert只有在upsert设置为true,并且被更新的文档不存在此集合中,需要插入一个新的文档的时候才起作用。在插入的时候会为新插入的文档添加给定的字段。
>db.user.update({name:"user1"},{_id:1,name:"user1"},1)
> db.user.find()
{ "_id" : 1, "name" : "user1" }
>db.user.update({name:"user2"},{$setOnInsert:{name:"user2",age:2}},1)
> db.user.find()
{ "_id" : 1, "name" : "user1" }
{ "_id" : ObjectId("51a02848d02692fff25c4238"),"age" : 2, "name" : "user2" }
> db.user.update({name:"user2"},{$setOnInsert:{name:"user3",age:3}},1)
> db.user.find()
{ "_id" : 1, "name" : "user1" }
{ "_id" : ObjectId("51a02848d02692fff25c4238"),"age" : 2, "name" : "user2" }
这个方法是在mongodb2.4中新加入的,具体在什么情况下使用,还不是很清楚。
$push
语法:db.collection.update(
{ $push:{