Ho un database di documenti personali. Ognuno ha un campo chiamato foto, che è una serie di documenti fotografici. Vorrei aggiungere un nuovo flag "revisionato" a ciascuno dei documenti fotografici e inizializzarlo su false.Aggiungere un nuovo campo a tutti i documenti in un array nidificato
Questa è la domanda che sto cercando di utilizzare:
db.person.update({ "_id" : { $exists : true } }, {$set : {photos.reviewed : false} }, false, true)
Tuttavia ottengo il seguente errore:
SyntaxError: missing : after property id (shell):1
questo è possibile, e se sì, che cosa faccio di sbagliato nel mio aggiornare?
Ecco un esempio completo della 'persona' documento:
{
"_class" : "com.foo.Person",
"_id" : "2894",
"name" : "Pixel Spacebag",
"photos" : [
{
"_id" : null,
"thumbUrl" : "http://site.com/a_s.jpg",
"fullUrl" : "http://site.com/a.jpg"
},
{
"_id" : null,
"thumbUrl" : "http://site.com/b_s.jpg",
"fullUrl" : "http://site.com/b.jpg"
}]
}
Bonus karma per chi mi può dire un detergente per cui per aggiornare "tutti i documenti" senza utilizzare la query { "_id" : { $exists : true } }
Buona risposta. Per chiarire quello che stavo cercando per il "bonus" era un modo per aggiornare tutti i documenti con una query "semplice" (qualcosa di più semplice di "{" _id ": {$ exists: true}}". Capisco il "multi" "param, ma ho ancora bisogno di una query che corrisponda a tutti i documenti. Ho pensato che forse" {} "corrisponderebbe a tutti i documenti, ma io non la penso così? –
E no, questa non è una" soluzione ", ma è una buona spiegazione del motivo per cui semplicemente non riesco a ottenere ciò che sto cercando con la versione curata di mongodb (2.0.2) .Se una soluzione diventa disponibile, si prega di inviare un'altra risposta per gli utenti futuri .. –