在更新陣列我有以下結構:的MongoDB - 對象數組
{
data: [
{pos:"0",
moreData: ["a", "b"]
},
{pos:"1",
moreData: ["a", "c"]
},
]}
我想和更新來更新上述結構。我想在pos = 1的位置添加一個字母給moreData。這是應該的樣子結尾:
{
data: [
{pos:"0",
moreData: ["a", "b"]
},
{pos:"1",
moreData: ["a", "c", "d"]
},
]}
我這樣做,此刻:(使用貓鼬,但無論是罰款)
model.update({"data.pos":"1"},
{ $push: {data:{ pos:"1", moreData:["d"] } } },
{ safe: true, upsert: false }, function(err){
});
所有我得到的是重複的「pos」:「1」,其中「moreData」只包含新元素「d」。 任何幫助將不勝感激。提前致謝!
感謝您的快速回復!我已經嘗試過你的解決方案,但它不會向數據庫添加任何內容。 我想,因爲你已經提到的,是你不能使用$嵌套數組。 –
@ user881387是否與您的問題有所不同?這對您提供的數據起作用。您可以使用$嵌套數組,但只匹配** **第一要素,那就是所有需要在這種情況下。當你想改變些什麼了「C」元素「MOREDATA」到「B」只成爲一個問題。在那裏你不能匹配**兩個**數組索引。但是像上面這樣的$ push操作沒有任何問題。 –
@ user881387並不是最好的嘗試,並在後期的意見,因爲它是非常難以閱讀。但你似乎在問你與你的問題有所不同。答案是給你的問題,如果你有另一個問題,然後張貼另一個問題。給出的語句**將在給定的條件下將「d」元素添加到您的數組中。 –