2012-03-24 2 views

Antwort

14

-Code

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

Beschreibung

Sie benötigen und es Benutzerobjekt zu finden, in die Variable setzen. Dann müssen Sie die gewünschte Eigenschaft ändern und dann das gesamte Objekt als neues Objekt einfügen. Um dies zu erreichen, müssen Sie die Eigenschaft _id löschen, die das Objekt bereits besitzt. Und dann einfach insert verwenden, um das neue zu erstellen.

+0

, das ist toll, dank –

+0

@ LucaG.Soave Sie sind willkommen! Danke :) – lig

+0

@ LucaG.Soave Ihr Update für meinen Code änderte es drastisch die ursprüngliche Idee war, 'user1' nicht zu löschen. – lig

2

Das _id Feld ist ein Pflichtfeld und wir können es nicht so löschen. Was ich tue, ist, jSON() zu dem zurückgegebenen Objekt aufzurufen und dann die _id zu löschen.

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

Löschen Sie nicht die _id Eigenschaft; Aus irgendeinem Grund verlieren einige Werte ihre type. Zum Beispiel werden Ganzzahlen in Doppelwerte umgewandelt.

Verwendung this solution:

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

Diese Antwort sollte mehr Aufmerksamkeit bekommen ... – frhd