2012-03-24 29 views

cevap

14

Kod

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

Açıklama Kullanıcı nesneyi bulmak ve değişken koymak gerekir

. İstediğiniz özelliği değiştirmeniz gerektiğinden ve tüm nesneyi yenisi olarak eklemeniz gerekiyor. Bunu başarmak için, nesnenin zaten sahip olduğu _id özelliğini silmeniz gerekir. Ve yeni bir tane oluşturmak için sadece insert kullanın.

+0

, teşekkür –

+0

LucaG.Soave @ Birşey değil! Teşekkür ederim :) – lig

+0

@ LucaG.Sen kodum için güncellemenizi büyük ölçüde değiştirdi orijinal fikir 'user1' silmek değil oldu. – lig

2

_id alanı zorunlu bir alandır ve onu böyle silemeyiz. Benim yaptığım şey, döndürülen nesneye JSON() öğesini çağırıp sonra da _id dosyasını silmektir.

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

_id mülkü silmeyin; Bazı nedenlerden dolayı bazı değerler type kaybeder. Örneğin, tamsayılar iki misline dönüştürülür.

Kullanım this solution:

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

Bu cevap daha fazla dikkat çekmeli ... – frhd