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 })