首页 > 解决方案 > 在mongodb,节点中按兄弟名称插入数组中的元素

问题描述

我想通过匹配兄弟名称在数组中插入一个元素。认为-

{
    "_id": {
        "$oid": "60e544a5e0762b0b2ef6657e"
    },
    "user0": "a",
    "details": [{
        "name": "jon",
        "things": [{
            "name": "car",
            "work": "travel"
        }, {
            "name": "phone",
            "work": "network"
        }]
     },{
        "name": "steve",
        "things": [{
            "what": "car",
            "work": "travel"
        }, {
            "what": "phone",
            "work": "network"
        }]
    }]
}

我想在“things”数组中插入一个名称为“steve”的对象,现在我正在这样做,但它不起作用

collection.updateOne({_id:docs[0]._id}, {$push:{"details.$[]":{things:req.body.data}}});

标签: mongodb

解决方案


您想使用arrayFilters,它使您能够使用查询更新数组中的特定元素,在本例中是名称为“steve”的元素:

db.collection.update(
{
   _id:docs[0]._id
},
{
  $push: {
    "details.$[elem].things": req.body.data
  }
},
{
  arrayFilters: [
    {
      "elem.name": "steve"
    }
  ]
})

蒙戈游乐场


推荐阅读