Это мой MongoDB запрос:Почему мой запрос MongoDb вставляет встроенный документ в Update?
db.events.update({date:{$gte: ISODate("2014-09-01T00:00:00Z")}},{$set:{"artists.$.soundcloud_toggle":false}},{multi:true,upsert:false})
Видимо, я не могу использовать «художник $ soundcloud_toggle..», Чтобы обновить все художник документы в массиве художников:
«Оператор $ может обновить первый элемент массива, который соответствует несколько критериев запроса с указанным оператором $ elemMatch(). http://docs.mongodb.org/manual/reference/operator/update/positional/ "
Я рад выполнить запрос несколько раз изменяя индекс массива для того, чтобы установить soundcloud_toggle свойство каждого художника в каждом случае соответствует запросу, например
artists.0.soundcloud_toggle
artists.1.soundcloud_toggle
artists.2.soundcloud_toggle
artists.3.soundcloud_toggle
Проблема: когда есть говорю, только один художник документ в массиве художников и я выполнить запрос с «artists.1.soundcloud_toggle» Это будет вставить художник документ в массив художника с одним свойством:
{
"soundcloud_toggle" : true
},
(я объявил " upsert: false ", которое по умолчанию должно быть ложным)
Как остановить запрос от вставки документа и установки soundcloud_toggle: false, когда там нет существующего документа? Я хочу, чтобы он обновлял свойство, если художник существует в указанном индексе массива художников.