MongoDB修改器


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 后续介绍
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容