簡體   English   中英

在貓鼬中更新具有多個條件的對象數組失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM