MongoLab (Heroku) のデータベースに対して更新を実行していますが、getLastError から情報を取得できません。
例として、以下は、私のマシンでローカルに実行されている MongoDB データベース (db バージョン 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 を実行しています (私のシェルは 2.0.3 です)。何が欠けているのか正確にはわかりません。私は彼らのサポートからの連絡を待っています (返信があり次第、ここに投稿します)。ありがとうございました。