共计 888 个字符,预计需要花费 3 分钟才能阅读完成。
文档替换更新
原始数据
{
"_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 })
正文完
请博主喝杯咖啡吧!