[英]update array of object with multiple condition in mongoose failed
[{
"date": "18/12/2010",
"babies": [{
"id":1,
"name": "James",
"age": 8,
}, {
"id":2,
"name": "John",
"age": 4,
}]
}]
我想將約翰的年齡設置為 10 歲,但失敗了。 我必須做多條件才能更具體。
Babies.update({"date":date, 'babies.id': 1}, {'$set': {age:10}, function(err, response){
res.json(response);
})
第一個條件是日期,第二個條件是嬰兒對象的數組,在這種情況下是 id。 上面的查詢沒有錯誤也沒有效果,我哪里做錯了?
我通過執行此查詢進行調試
Babies.find({'babies.id': 1}, function(err, response){
res.json(response);
})
它找不到正確的目標,也許這就是問題所在
使用{'$set': {'babies.$.age':10}}
而不是{'$set': {age:10}}
。
Babies.update({"date":date, 'babies.id': 1},
{'$set': {
'babies.$.age':10
}
},
function(err, response){
res.json(response);
})
位置 $ 運算符標識數組中要更新的元素,而無需明確指定該元素在數組中的位置。
有關更多信息,請參閱MongoDB 位置運算符。
不是在 $set 標志中只傳遞字段值 {age:10} 的對象,而是以 Array.index.field 的格式傳遞值。 所以會變成這樣——
{ $set: { 'babies.$.age': 10 } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.