2012-03-24 5 views

답변

14

코드

> user = db.users.findOne({'nickname': 'user1'}) 
> user.nickname = 'userX' 
> delete user['_id'] 
> db.users.insert(user) 

설명 당신은 사용자 개체를 찾아 변수에 넣어 필요가

. 원하는 속성을 수정해야하며 전체 개체를 새로운 개체로 삽입해야합니다. 이를 달성하기 위해서는 개체에 이미있는 _id 속성을 삭제해야합니다. 그리고 새 것을 만들려면 insert을 사용하십시오.

+0

, 감사 –

+0

는 LucaG.Soave @ 당신은 환영합니다! 고마워요 :) – lig

+0

@ LucaG.Soave 제 코드가 대폭 변경되었습니다. 원래 아이디어는'user1'을 삭제하지 않는 것이 었습니다. – lig

2

_id 필드는 필수 입력란이므로 삭제할 수 없습니다. 내가 할 일은 반환 된 객체에 toSON()을 호출 한 다음 _id를 삭제하는 것입니다.

var rObject = dbObject.toJSON(); 
delete rObject._id; 
db.insert(rObject); 
5

_id 속성을 삭제하지 마십시오. 어떤 이유로 든 일부 값은 type을 잃게됩니다. 예를 들어, 정수는 double로 변환됩니다.

사용 this solution :

위대한
var user = db.users.findOne(...) 
user._id = new ObjectId() 
// set other properties 
db.users.insert(user) 
+0

이 답변은 더 많은 관심을 받아야합니다 ... – frhd

관련 문제