2012-03-24 12 views

risposta

14

Codice

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

Descrizione

Hai bisogno di trovare oggetto utente e metterlo nella variabile. Di quanto è necessario modificare la proprietà che si desidera e di quanto è necessario inserire l'intero oggetto come nuovo. Per raggiungere questo è necessario eliminare la proprietà _id che l'oggetto ha già. E basta usare lo insert per crearne uno nuovo.

+0

che è grande, grazie –

+0

@ LucaG.Soave siete i benvenuti! Grazie :) – lig

+0

@ LucaG.Ovvia il tuo aggiornamento per il mio codice modificato drasticamente l'idea originale era di non eliminare 'utente1'. – lig

2

Il campo _id è un campo obbligatorio e non è possibile eliminarlo in questo modo. Quello che faccio è chiamare toJSON() all'oggetto restituito e quindi eliminare _id.

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

Non eliminare la proprietà _id; per qualche motivo alcuni valori perdono il loro type. Ad esempio, gli interi vengono convertiti in doppi.

Uso this solution:

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

Questa risposta dovrebbe ottenere più attenzione ... – frhd

Problemi correlati