美文网首页
MongoDB修改器

MongoDB修改器

作者: Eve0 | 来源:发表于2017-08-22 21:52 被阅读0次

    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 后续介绍

    相关文章

      网友评论

          本文标题:MongoDB修改器

          本文链接:https://www.haomeiwen.com/subject/iykhdxtx.html