如何在Mongo DB中更新特定数组元素的值

时间:2020-01-12 04:39:57

标签: node.js mongodb

如何更新mongo db中特定数组元素的购物和食物的价值?

MongoDB文档:

   {
    "data": [
        {
            "_id": "5e131eb4ea0c191cdc06f96b",
            "firstName": "Anirudh",
            "lastName": "Singla",
            "gender": "Male",
            "username": "anirudhsingla8",
            "email": "anirudhsingla8@gmail.com",
            "password": "rj13sl1608",
            "cards": [
                {
                    "card_number": "1014220122322233",
                    "shopping": 0,
                    "food": 0
                },
                {
                    "card_number": "1014220122322234",
                    "shopping": 0,
                    "food": 0
                }
           }
         ]
}

我试图更新数组的子元素中的值,例如"card_number"="1014220122322234"的购物的当前值为0。但我想根据用户需要对其进行更新。例如,如果用户输入10,则应将其更新为0+10=10,如果它是10,并且用户输入16,则应将其更新应该这样更新为10+16=26。但是我无法在mongodb docs上找到针对此类更新的查询。

1 个答案:

答案 0 :(得分:0)

您可以使用positional($) operator

User.update(
  {
    _id: userId,
    'cards.card_number': '1014220122322233'
  },
  {
    $inc: { 'cards.$.shopping': 1, 'cards.$.food': 1 }
  }
);

这会使购物和食物都增加1。