這是我的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「,默認情況下應該是false)
如何停止查詢插入文檔並設置soundcloud_toggle:如果沒有現有文檔,則爲false?如果藝術家存在於給定的藝術家數組索引中,我只希望它更新屬性。