mongodb增删改查之改

1,337次阅读
没有评论

mongodb增删改查之改

文档替换更新

原始数据
{ 
    "_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 })
admin
版权声明:本站原创文章,由admin2018-05-19发表,共计888字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)