mongodb crud 之 update

来源:互联网 发布:龙渊网络手游 编辑:程序博客网 时间:2024/06/13 15:49

mongodb更新的方法:

在查的基础之上,update就显的简单多了,

    官方提供的修改的方法有:

               db.collection.update()

               db.collection.updateOne()

               db.collection.updateMany()

               db.collection.replaceOne()

     除此之外还有以下方法:

                   db.collection.findOneAndReplace()

                   db.collection.findOneAndUpdate()

                   db.collection.findOneAndModify()

                   db.collection.save()

                   db.collection.bulkWrite()

    默认的update()是使用指定新值替换的成一个新的文档,例如test集合中存在这个文档:{_id:1,name:"gy",addr:"shanghai"},

    假如使用db.test.update({name:"gy"},{addr:"nantong"}),目的是想将name="gy"的数据找出来,将addr修改为"nantong",事实上经过操作,

    该数据变为{ "_id" : 1, "addr" : "nantong" },除了_id,其余没出现的字段全部被移除了,想直接实现这个功能就只有将第二个参数换成一个完整文档了。

    事实上,只需要加一个操作符就没那么麻烦了,更新后的语法为db.test.update({name:"gy"},{$set:{addr:"nantong"}})

update()方法第三个参数为upsert,值为false或true,upsert=update+insert,即找到对应数据,发生修改,找不到就插入。

除了$set还有

     $inc,$currentDate,$min,$max,$mul,$rename,$setOnInsert(2.4的版本,即当发生未有满足条件插入新文档的时候,同时添加该字段和默认值。用作初始化数据的场景),$unset(删除)

  除此之外,还有数组的修改操作符:

      $,数组第一个元素,例如"array.$"代表array数组中的第一个元素

      $addToSet,在该数组中添加不存在的值

      $pop,值为-1或1对应移除该数组的第一个或最后一个元素

      $pull,全都匹配才移除元素值

      $pullAll,已弃用

      $push,可向该数组重复添加值

      $pushAll,移除任意匹配的元素值

       以上操作符的修饰符,用来搭配操作符使用:

                   $each,   搭配$push和$addToSet使用

                   $position,指定添加元素在数组中的位置

                   $slice,指定$push操作影响数组的大小,比如原来数组上存在2个元素,$slice 值为3,限制$push最多向该数组添加一个数组元素

                   $sort,搭配$push使用,指定数组元素添加的顺序

     

原创粉丝点击