Arrays 如果mongodb中不存在grand children元素,如何添加它?

Arrays 如果mongodb中不存在grand children元素,如何添加它?,arrays,mongodb,updates,Arrays,Mongodb,Updates,我需要向grand children元素添加新元素。例如,我需要将新仓库添加到现有产品中。在本例中,所有size.wares都有LAX,但产品“aaaa”、尺寸“42”和产品“bbbb”、尺寸“45”中缺少“NYC” 因此,我需要检查所有产品及其尺寸,如果存在“NYC”,则添加新的“NYC” 例如产品“bbbb”尺寸“45” “向上插入”后应该是这样吗 这是一个: db.collection.updateOne( { productCode: "bbbb" }, { $p

我需要向grand children元素添加新元素。例如,我需要将新仓库添加到现有产品中。在本例中,所有size.wares都有LAX,但产品“aaaa”、尺寸“42”和产品“bbbb”、尺寸“45”中缺少“NYC”

因此,我需要检查所有产品及其尺寸,如果存在“NYC”,则添加新的“NYC”

例如产品“bbbb”尺寸“45”

“向上插入”后应该是这样吗

这是一个:

db.collection.updateOne(
   { productCode: "bbbb" },
   {
      $push: {
         "sizes.$[item].wares": {
            _id: ObjectId("5db72c636309f84479ec0c7a"),
            ware: "NYC",
            amount: 0
         }
      }
   },
   { arrayFilters: [{ "item.size": "45" }] }
)
注意,为了避免重复,您可以使用
$addToSet
而不是
$push

{
    "_id": ObjectId("5db72c636309f84479ec0c7q"),
    "size": "45",
    "wares": [
        {
        "_id": ObjectId("5db72c636309f84479ec0c7n"),
        "ware": "LAX",
        "amount": 16
        }
    ]
    }
{
    "_id": ObjectId("5db72c636309f84479ec0c7q"),
    "size": "45",
    "wares": [
        {
        "_id": ObjectId("5db72c636309f84479ec0c7n"),
        "ware": "LAX",
        "amount": 16
        },{
        "_id": ObjectId("5db72c636309f84479ec0c7x"),
        "ware": "NYC",
        "amount": 0
        }

    ]
    }
db.collection.updateOne(
   { productCode: "bbbb" },
   {
      $push: {
         "sizes.$[item].wares": {
            _id: ObjectId("5db72c636309f84479ec0c7a"),
            ware: "NYC",
            amount: 0
         }
      }
   },
   { arrayFilters: [{ "item.size": "45" }] }
)