MongoDB_05_更新和删除

文档的更新和删除

  • 更新文档的方法:

    db.collection.update(query,update,options)
    //或
    db.collection.update(
    	<query>,                   --类似于sql中的where 字句
        <update>,			       --要更新的字段值
        {
            upsert: <boolean>,
            multi: <boolean>,
            writeConcern: <document>,
            collection: <document>,
            arrayFilters: [<filterdocument1 >,...],
            hint: <document|String>
        }
    )
    -------------------------------------------------------
    
    示例:
     (1):覆盖的修改 ---不推荐
       如果我们想修改_id为1的记录,点赞量会520,这输入以下语句
    db.comment.update({_id:"1"},{likenum:NumberInt(520)})
    
    执行后我们发现,这条文档除了likenum字段,其它字段都不见了
    
    (2):局部修改---使用 $set修改器
    db.comment.update({_id:"2"},{$set:{likenum:NumberInt(520)}})
    
    执行:
    > db.comment.update({_id:"2"},{$set:{likenum:NumberInt(520)}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    
    > db.comment.findOne({_id:"2"})             #查找
    {
            "_id" : "2",
            "articleid" : "100002",
            "content" : "我爱你,绩憨憨2",
            "userid" : "1002",
            "nickname" : "hanhan",
            "createdatetime" : ISODate("2020-02-27T14:17:24.708Z"),
            "likenum" : 520,
            "state" : null
    }
    
    
    (3);批量修改
    修改所有nickname:"hanhan" 为 "jihanhan"
    
    > db.comment.find({})
    { "_id" : ObjectId("5e57cc7d24335849dc4a2ab8"), "articleid" : "100000", "content" : "我爱你,中国", "userid" : "1001", "nickname" : "Rose", "createdatetime" : ISODate("2020-02-27T14:04:45.459Z"), "likenum" : 10, "state" : null }
    { "_id" : "2", "articleid" : "100002", "content" : "我爱你,绩憨憨2", "userid" : "1002", "nickname" : "hanhan", "createdatetime" : ISODate("2020-02-27T14:17:24.708Z"), "likenum" : 520, "state" : null }
    { "_id" : "3", "articleid" : "100003", "content" : "我爱你,绩憨憨3", "userid" : "1003", "nickname" : "hanhan", "createdatetime" : ISODate("2020-02-27T14:17:24.709Z"), "likenum" : 10, "state" : null }
    { "_id" : "4", "articleid" : "100004", "content" : "我爱你,绩憨憨4", "userid" : "1004", "nickname" : "hanhan", "createdatetime" : ISODate("2020-02-27T14:17:24.709Z"), "likenum" : 10, "state" : null }
    
    //默认只修改第一条匹配的数据
    db.comment.update({nickname:"hanhan"},{$set:{nickname:"jihanhan"}})
    
    //修改所有符合条件的数据---添加字段{multi:true}
    db.comment.update({nickname:"hanhan"},{$set:{nickname:"jihanhan2"}},{multi:true})
    
    
    执行 :
    > db.comment.update({nickname:"hanhan"},{$set:{nickname:"jihanhan"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    
    > db.comment.update({nickname:"hanhan"},{$set:{nickname:"jihanhan2"}},{multi:true})
    WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
    
    
    (4):列值增长的修改
     实现对某列值在原有值的基础上进行增长或者减少,可以使用$inc运算符来实现。
    需求:对3号数据的点赞数,每次递增1
    db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})
    
    执行:
    > db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    
  • 删除文档

    删除文档的语法结构
    db.集合名称.remove(条件)
    
    以下语句可以全部删除:------慎用
    db.comment.remove({})
        
    
    如果删除_id="2"的记录
    执行:
    db.comment.remove({_id:"2"})
    WriteResult({ "nRemoved" : 1 })
    
posted @ 2020-02-28 15:22  Noob52037  阅读(107)  评论(0编辑  收藏  举报