• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

mongodb增删改查之改

Sql admin 5个月前 (05-19) 194次浏览 0个评论 扫描二维码

文档替换更新

原始数据
{ 
    "_id" : ObjectId("5afd34052c63ae1a943bdb27"), 
    "name" : "joe", 
    "friends" : 32.0, 
    "enemies" : 2.0
}
{ 
    "_id" : ObjectId("5afd347c2c63ae1a943bdb28"), 
    "name" : "joe", 
    "friends" : 33.0, 
    "enemies" : 3.0
}
{ 
    "_id" : ObjectId("5afd347c2c63ae1a943bdb29"), 
    "name" : "joe", 
    "friends" : 34.0, 
    "enemies" : 4.0
}

如果出现以下情况,需要更改其中一个文档的数据

joe=db.test.find({"name":"joe","friends" : 33.0})
joe.friends++;
db.test.update({"name":"joe"})
上述代码会出现报错
2018-05-19T09:18:46.275+0800 E QUERY    [thread1] Error: need an object :
DBCollection.prototype._parseUpdate@src/mongo/shell/collection.js:443:1
DBCollection.prototype.update@src/mongo/shell/collection.js:483:18
@(shell):1:1

产生错误的原因在于在使用 db_update 的时候会找到一个符合条件的数据,但是当前的 _id 与实际要更新的 _id 文档数据不符合,所以会出现报错,因此要更新的化需要指定相应的 _id 才能正确的更新

joe=db.test.find({"name":"joe","friends" : 33.0})
joe.friends++;
db.test.update({"_id" : ObjectId("5afd347c2c63ae1a943bdb28")},joe)
执行代码的 log 日志如下
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mongodb增删改查之改
喜欢 (0)
admin
关于作者:

您必须 登录 才能发表评论!