У меня есть база данных документов человека. У каждого есть поле с именем photos, которое представляет собой массив фотодокументов. Я хотел бы добавить новый «проверенный» флаг в каждый из фотодокументов и инициализировать его ложным.Добавить новое поле во все документы во вложенном массиве
Это запрос, я пытаюсь использовать:
db.person.update({ "_id" : { $exists : true } }, {$set : {photos.reviewed : false} }, false, true)
Однако я получаю следующее сообщение об ошибке:
SyntaxError: missing : after property id (shell):1
Возможно ли это, и если да, то, что я делаю неправильно в моем Обновить?
Вот полный пример «персона» документа:
{
"_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 кармы для тех, кто может сказать мне уборщик почему обновить «все документы» без использования запроса { "_id" : { $exists : true } }
Хороший ответ. Чтобы уточнить, что я искал для «бонуса», был способ обновить все документы «простым» запросом (что-то более простое, чем «{« _id »: {$ exists: true}}». Я понимаю, что «multi» «param», но мне все еще нужен запрос, который соответствует всем документам. Я думал, что «{}» будет соответствовать всем документам, но я так не думаю? –
И нет, это не «решение», а Хорошее объяснение того, почему я просто не могу добиться того, что я ищу, с завершенной версией mongodb (2.0.2). Если решение станет доступным, отправьте другой ответ для будущих пользователей. –