2011-04-07 11 views
47

Questa sembra una domanda stupida ma non ho ancora trovato la risposta. Se volessi semplicemente aggiungere lo stesso campo-> valore a OGNI record in una raccolta MongoDB, quale sarebbe il comando di shell appropriato per farlo? Ho provato a fare un multi aggiornamento con una query vuota ({}), ma che hanno portato a questo errore:MongoDB: aggiornamenti incondizionati?

Multi aggiornamento funziona solo con $ operatori

io sono un po 'perplesso su come ottenere intorno a questo . Eventuali suggerimenti?

risposta

98

L'errore dice tutto: è possibile modificare più documenti utilizzando lo $ modifier operators. Probabilmente aveva qualcosa di simile:

> db.coll.update({ }, { a: 'b' }, false, true); 

che normalmente sostituire il primo oggetto nella collezione con { a: 'b' } se multi era falso. Non vorrai sostituire tutti gli oggetti della tua collezione con lo stesso documento!

Utilizzare la $set operator invece:

> db.coll.update({ }, { '$set': { a: 'b' } }, false, true); 

Questo imposterà la proprietà a di ogni documento (creandolo se necessario) per 'b'.

+0

Grazie per l'aiuto! Questo è stato davvero un mio errore. –

+1

'$ set' senza quotazione funzionerà anche – Jaider

Problemi correlati