javascript - Mongoose - 如何在嵌套的对象数组中推送对象

标签 javascript node.js mongodb mongoose mongodb-update

我的 MongoDB 数据库中有这个数据结构:

"menu": [
        {
            "dishCategory":"61e6089f209b802518e2b4a4",
            "dishMeals": [
                {
                    "dishMealName": "Burger King",
                    "dishMealIngredients": "Burger lepinja, bbq sos, berlin sos, zelena"
                    "dishMealPrice": 5
                }
            ]
        }
    ]

如何在 dishMeals 中以确切的 dishCategory 推送新对象(我提供 dishCategoryIdnewDish通过 req.body 的餐厅的对象和 _id)我已经尝试过了,但没有任何改变:

await Restaurants.updateOne(
        {
            '_id' : _id,
            'menu.dishCategory' : dishCategoryId
        },
        {
            $push : {
                'menu.$.dishMeals' : newDish
            }
        }
    );

最佳答案

  1. 使用 arrayFilters过滤数组字段中的嵌套文档,然后 $push 如果 arrayFilters 中的过滤条件满足。
db.collection.update({
  "_id": _id,
  "menu.dishCategory": dishCategoryId
},
{
  $push: {
    "menu.$[menu].dishMeals": newDish
  }
},
{
  arrayFilters: [
    {
      "menu.dishCategory": dishCategoryId
    }
  ]
})

Sample Mongo Playground

关于javascript - Mongoose - 如何在嵌套的对象数组中推送对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70779241/

相关文章:

ruby-on-rails - 何时应嵌入或引用 Mongodb 关联

java - 如何使用java程序执行mongoexport命令

javascript - jQuery/css 不适用于 BigCommerce

javascript - Facebook 登录 : Please make sure your redirect_uri is identical to the one you used in the OAuth dialog

node.js - Mongoose聚合管道: Comparing to own object

javascript - 在 nodejs 中需要

spring - 如何在 Spring MongoDB 中将 2 个整数值连接成一个字符串

javascript - 使用 localStorage 进行身份验证

javascript - 如何在单击时使用 jQuery 查找同级元素的值

node.js - 从node.js切换到iisnode时需要更改哪些内容?