我正在对 MongoLab (Heroku) 中的数据库运行更新,无法从 getLastError 获取信息。
例如,以下是更新在我的机器上本地运行的 MongoDB 数据库中的集合的语句(数据库版本 v2.0.3-rc1)。
ariels-MacBook:mongodb ariel$ mongo
MongoDB shell version: 2.0.3-rc1
connecting to: test
> db.mycoll.insert({'key': '1','data': 'somevalue'});
> db.mycoll.find();
{ "_id" : ObjectId("505bcc5783cdc9e90ffcddd8"), "key" : "1", "data" : "somevalue" }
> db.mycoll.update({'key': '1'},{$set: {'data': 'anothervalue'}});
> db.runCommand('getlasterror');
{
"updatedExisting" : true,
"n" : 1,
"connectionId" : 4,
"err" : null,
"ok" : 1
}
>
当地一切都很好。
现在我切换到 MongoLab 中的数据库并运行相同的语句来更新文档。getLastError 未返回 updatedExisting 字段。因此,我无法测试我的更新是否成功。
ariels-MacBook:mongodb ariel$ mongo ds0000000.mongolab.com:00000/heroku_app00000 -u someuser -p somepassword
MongoDB shell version: 2.0.3-rc1
connecting to: ds000000.mongolab.com:00000/heroku_app00000
> db.mycoll.insert({'key': '1','data': 'somevalue'});
> db.mycoll.find();
{ "_id" : ObjectId("505bcf9b2421140a6b8490dd"), "key" : "1", "data" : "somevalue" }
> db.mycoll.update({'key': '1'},{$set: {'data': 'anothervalue'}});
> db.runCommand('getlasterror');
{
"n" : 0,
"lastOp" : NumberLong("5790450143685771265"),
"connectionId" : 1097505,
"err" : null,
"ok" : 1
}
> db.mycoll.find();
{ "_id" : ObjectId("505bcf9b2421140a6b8490dd"), "data" : "anothervalue", "key" : "1" }
>
有人遇到过这个吗?如果重要的话,我在 MongoLab 的资源正在运行 mongod v2.0.7(我的 shell 是 2.0.3)。不完全确定我错过了什么。我正在等待他们的支持(当我收到回复时我会在这里发帖),但也想在这里与你们联系,以防万一。谢谢你。