1.字段修改器
- $currentDate
數(shù)據(jù)準(zhǔn)備:db.userlist.insert({name:'mily',age:25,birth:ISODate("2013-10-02T01:11:18.965Z")});
更新birth字段為當(dāng)前時(shí)間室谚,年齡修改為24:
db.userlist.update(
{ name: 'mily' },
{
$currentDate: {
"birth":{
$type:'date'
}
},
$set:{
age:24
}
});
查看結(jié)果:
{
"_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
需要修改的值如果比原來文檔中的值小毡鉴,就更新,否則不更新.如果原元素中不存在該屬性秒赤,則以當(dāng)前的值set進(jìn)去
db.userlist.update({name:'mily'},{$min:{age:13}})
$max
需要修改的值如果比原來文檔中的值大猪瞬,就更新,否則不更新.如果原元素中不存在該屬性入篮,則以當(dāng)前的值set進(jìn)去
db.userlist.update({name:'mily'},{$min:{age:23}})
$mul
與原文檔中指定的元素相乘陈瘦,如果不存在,則設(shè)置為0
db.userlist.update({name:'lily'},{$mul:{age:3}})
#年齡設(shè)置為3倍$rename 重命名
db.userlist.update({name:'lily'},{$rename:{name:'new-name'}});
#將lily的這個(gè)文檔元素name修改為new-name$set
更新其中的部分字段
db.userlist.update({name:'t'},{$set:{age:23}})
#更新name為t的年齡為23$setOnInsert
新插入了一個(gè)文檔潮售,upset:true.如果update和update:true匹配到了文檔痊项,這個(gè)時(shí)候,會(huì)忽略$setOnInsert操作酥诽。
db.products.update(
... { _id: 1 },
... {
... $set: { item: "apple" },
... $setOnInsert: { defaultQty: 100 }
... },
... { upsert: true }
... )
- $unset
刪除指定的屬性
db.products.update({_id:1},{$unset:{defaultQty:""}});
刪除defaultQty屬性
2.數(shù)組修改器
數(shù)據(jù)準(zhǔn)備:
db.students.insertMany([
{ "_id" : 1, "grades" : [ 80, 85, 90 ] },
{ "_id" : 2, "grades" : [ 88, 90, 92 ] },
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }
]);
- $(update)
(1)更新數(shù)組中的值:
db.students.update({_id:1,grades:90},{$set:{'grades.$':91}})
查找id為1鞍泉,grades含有90的,并將其修改為91
(2)更新數(shù)組中的文檔
$addToSet
更新name為小明的肮帐,habbit追加一個(gè)hello.不重復(fù)的元素塞弊。否則加不進(jìn)去。
db.userlist.update({name:'xiaoming'},{$addToSet:{habbit:'hello'}})
此時(shí):"habbit" : [ "banana", "apple", "peach", "grape", "hello" ]$pop
移除數(shù)組的第一個(gè)或者最后一個(gè)元素泪姨。-1移除第一個(gè)游沿,1移除最后一個(gè)。
db.userlist.update({name:'xiaoming'},{$pop:{habbit:1}})
#移除hello$pull
移除數(shù)組里的某元素
db.userlist.update({name:'xiaoming'},{$pull:{habbit:'peach'}})
#移除小明興趣里的peach$pullAll
與$pull差不多肮砾。這個(gè)移除多個(gè)诀黍。
db.userlist.update({name:'xiaoming'},{$pullAll:{habbit:['grape','apple']}})
$push
向原元素中追加
db.userlist.update({name:'xiaoming'},{$push:{habbit:'apple'}})
$pushAll
追加多個(gè)
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
指定插入的位置仗处,下標(biāo)從0開始
db.userlist.update({name:'xiaoming'},{$push:{habbit:{$each:['cc','dd'],$position:0}}})
$slice
更新數(shù)組中的幾個(gè)眯勾。0表示清空枣宫,-num表示更新數(shù)組中的倒數(shù)num個(gè),num表示更新數(shù)組中的前num個(gè)吃环。
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 后續(xù)介紹