1.字段修改器
- $currentDate
数据准备:db.userlist.insert({name:'mily',age:25,birth:ISODate("2013-10-02T01:11:18.965Z")});
更新birth字段为当前时间,年龄修改为24:
db.userlist.update(
{ name: 'mily' },
{
$currentDate: {
"birth":{
$type:'date'
}
},
$set:{
age:24
}
});
查看结果:
{
"_id" : ObjectId("599b44fc91cf72aa04177638"),
"name" : "mily",
"age" : 24,
"birth" : ISODate("2017-08-21T20:43:18.226Z")
}
-
$inc 指定字段增加
db.userlist.update({name:'mily'},{$inc:{age:1}})
#将名字为mily的人年龄+1 -
$min
需要修改的值如果比原来文档中的值小,就更新,否则不更新.如果原元素中不存在该属性,则以当前的值set进去
db.userlist.update({name:'mily'},{$min:{age:13}})
-
$max
需要修改的值如果比原来文档中的值大,就更新,否则不更新.如果原元素中不存在该属性,则以当前的值set进去
db.userlist.update({name:'mily'},{$min:{age:23}})
-
$mul
与原文档中指定的元素相乘,如果不存在,则设置为0
db.userlist.update({name:'lily'},{$mul:{age:3}})
#年龄设置为3倍 -
$rename 重命名
db.userlist.update({name:'lily'},{$rename:{name:'new-name'}});
#将lily的这个文档元素name修改为new-name -
$set
更新其中的部分字段
db.userlist.update({name:'t'},{$set:{age:23}})
#更新name为t的年龄为23 -
$setOnInsert
新插入了一个文档,upset:true.如果update和update:true匹配到了文档,这个时候,会忽略$setOnInsert操作。
db.products.update(
... { _id: 1 },
... {
... $set: { item: "apple" },
... $setOnInsert: { defaultQty: 100 }
... },
... { upsert: true }
... )
- $unset
删除指定的属性
db.products.update({_id:1},{$unset:{defaultQty:""}});
删除defaultQty属性
2.数组修改器
数据准备:
db.students.insertMany([
{ "_id" : 1, "grades" : [ 80, 85, 90 ] },
{ "_id" : 2, "grades" : [ 88, 90, 92 ] },
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }
]);
- $(update)
(1)更新数组中的值:
db.students.update({_id:1,grades:90},{$set:{'grades.$':91}})
查找id为1,grades含有90的,并将其修改为91
(2)更新数组中的文档
-
$addToSet
更新name为小明的,habbit追加一个hello.不重复的元素。否则加不进去。
db.userlist.update({name:'xiaoming'},{$addToSet:{habbit:'hello'}})
此时:"habbit" : [ "banana", "apple", "peach", "grape", "hello" ] -
$pop
移除数组的第一个或者最后一个元素。-1移除第一个,1移除最后一个。
db.userlist.update({name:'xiaoming'},{$pop:{habbit:1}})
#移除hello -
$pull
移除数组里的某元素
db.userlist.update({name:'xiaoming'},{$pull:{habbit:'peach'}})
#移除小明兴趣里的peach -
$pullAll
与$pull差不多。这个移除多个。
db.userlist.update({name:'xiaoming'},{$pullAll:{habbit:['grape','apple']}})
-
$push
向原元素中追加
db.userlist.update({name:'xiaoming'},{$push:{habbit:'apple'}})
-
$pushAll
追加多个
db.userlist.update({name:'xiaoming'},{$pushAll:{habbit:['potato','peach']}})
-
$each
与$addToSet或者$push一起使用。
db.userlist.update({name:'xiaoming'},{$push:{habbit:{$each:['aaa','bbb']}}})
#追加aaa,bbb -
$position
指定插入的位置,下标从0开始
db.userlist.update({name:'xiaoming'},{$push:{habbit:{$each:['cc','dd'],$position:0}}})
-
$slice
更新数组中的几个。0表示清空,-num表示更新数组中的倒数num个,num表示更新数组中的前num个。
db.userlist.update({name:'xiaoming'},{$push:{habbit:{$each:['11','22'],$slice:0}}})
#清空 -
$sort
给小明的books字段添加。并按照pages升序排放。
db.userlist.update(
{name:'xiaoming'},
{
$push:{
books:{
$each:[
{name:'math',pages:130},
{name:'English',pages:450},
{name:'Geo',pages:76}
],
$sort:{pages:1}
}
}
})
3.按位修改器
- $bit
4.位置修改器
- $isolated 后续介绍
网友评论