2013-01-20 7 views
2

Mongo DB에서 행을 업데이트하려고합니다. 나는 Erinamodobo 같은 이름을 가진 행을 업데이트하고 나는 아래의 방법으로 시도 55Mongo : Mongo DB 행을 업데이트하는 중 문제가 발생했습니다.

에 나이를 수정하려고하지만, 그 작업을하고 있지 않다 명명 된 사용자

db.users.find() 

{ "_id" : ObjectId("50e2efe968caee13be412413"), "username" : "sss", "age" : 32 } 

모음을 가지고있다.

db.users.update({ "_id": "50e2efe968caee13be412413" }, { $set: { "username": "Erinamodobo" } }); 

내가 어디에서 실수를하고 있는지 알려 주시기 바랍니다.

답변

2

패스 기록 mongo 쉘을 사용 중이면 기존 사용자를 찾을 수 없습니다.

db.users.update({"_id": ObjectId("50e2efe968caee13be412413")}, 
    { "$set" : 
      { "username": "Erinamodobo", "age" : "55" }}) 
+0

이것은 내가 찾고있는 것입니다. – Pawan

1

이 쿼리를 사용하면 이름 자체를 업데이트하고 있습니다. 업데이트의 구문은 다음이다

공지 :

db.COLLECTION.update({query}, {update}, {options}) 
query 갱신 레코드를 선택하고

update 업데이트 필드의 값을 지정.

따라서, 귀하의 경우 정확한 명령은 다음과 같습니다 그러나

db.users.update({ "name": "Erinamodobo" }, { $set: { "age": 55 } }); 

, 나는 MongoDB의 설명서를 읽어보실 것을 suggets, 아주 잘 ObjectId가로 _id에 (http://docs.mongodb.org/manual/applications/update/)

+1

(답을 이해하지 못했기 때문에 _id를 기반으로 답변을 추가했습니다.) 이제 보았습니다. 쿼리 부분이 원래 데이터와 일치하면 업데이트 명령이 작동했을 것입니다. 그것은 물론'{ "username": "sss"}'일 필요가 있었을 것입니다. 물론 모든 사용자 이름을'sss' 값으로 매치했을 것입니다. – WiredPrairie

+0

thats 괜찮아요. 그걸 고쳤고 걱정스럽게 대단히 고마워요. – Pawan

0

@WiredPrairie의 확장으로서, 그가 옳은 대답을 제시하더라도 그는 실제로 설명하지 않습니다.

OjbectId

은 그렇게 그 Object에 의해 검색하는 것은 당신이 즉, 여기에, 동일한 유형의 Ojbect를 제공해야합니다 실제로 Object입니다, 문자열이 아닌 ObjectId :

동일은 특정 간다
db.users.update({ "_id": ObjectId("50e2efe968caee13be412413") }, { $set: { "username": "Erinamodobo" } }); 

Date에서 NumberLong까지 사용하는 BSON 유형은 Object 유형으로 매개 변수를 래핑해야합니다.