2012-09-21 3 views
2

MongoLab (Heroku)에서 데이터베이스에 대한 업데이트를 실행 중이며 getLastError에서 정보를 가져올 수 없습니다.No updated updated MongoLab의 getLastError에서 존재합니다.

예를 들어 (db 버전 v2.0.3-rc1)을 실행중인 MongoDB 데이터베이스에서 컬렉션을 업데이트하는 구문은 다음과 같습니다.

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)을 실행 중입니다. 내가 무엇을 놓치고 있는지 확실하지 않습니다. 나는 그들의 말을 듣기를 기다리고있다. (내가 들었을 때 나는 여기에 올릴 것이다.) 괜찮은 사람들을 여기에서 확인하고 싶다. 감사합니다.

답변

1

이것은 mongod 프로세스에 대한 관리자 권한이없는 것으로 보이는 제한 사항입니다. 필요한 제한 사항처럼 보이지 않으므로 10gen을 사용하여 티켓을 제출할 수 있습니다.

노트북에서 인증 모드로 Mongo를 실행할 때 0 또는 "updatedExisting"필드 이외의 "n"을 보려면 관리 데이터베이스에서 사용자로 인증해야합니다. 다른 데이터베이스에서 사용자로 인증을 받으면 MongoLab 제품에서 볼 수있는 것과 비슷한 결과를 얻습니다.

(전체 공개 : MongoLab을 위해 일하고 있습니다. 부수적으로 Google 시스템에 언급 된 지원 티켓이 표시되지 않습니다. 원하는 경우 직접 지원해 드리겠습니다. [email protected] 또는 http://support.mongolab.com에 문의하십시오.

+0

감사합니다. @jared. 나는 우리 팀이 어제 영업 종료 전에 항공권에 넣을 수 있었다고 가정했다. 그것에 후속 할 것입니다. – arieldelafuent3

+0

FYI : 이것은이 버그를 추적하는 서버 티켓입니다. https://jira.mongodb.org/browse/SERVER-7315 –