首页 > 解决方案 > Pymongo MongoDB - 如何从具有 3 个要索引的数组中的数组中删除对象

问题描述

这是我目前的收藏

{
    "req_id": "c76372ee-e8d7-4c9e-81cb-d682fe069320",
    "data": [
        {target_num: 0, vehicle_list: [{vehicle_num: 0, paths_list: [{pair_id: 0}]}, {pair_id: 1}]}]},
        {target_num: 1, vehicle_list: [{vehicle_num: 0, paths_list: [{pair_id: 2}]}]},
            ]
}

我想用pair_id 0删除paths_list中的对象。

我有:

我将如何在python中删除它?

这是我的尝试,但它不起作用,我不知道为什么......

collection.update(
        {"_id": ObjectId(
            "t43z5e64b72e2f7816bfdx32")
        },
        {
            "$pull":
            {
                "data":
                {
                    "target_num": 0,
                    "vehicle_list": {
                        "vehicle_num": 0,
                        "paths_list": {
                            "pair_id": 0
                        }
                    }
                }
            }
        }
    )

任何帮助是极大的赞赏!

标签: pythonmongodb

解决方案


您可以$pull使用arrayFilters.

db.collection.update({},
{
  $pull: {
    "data.$[d].vehicle_list.$[v].paths_list": {
      pair_id: 0
    }
  }
},
{
  arrayFilters: [
    {
      "d.target_num": 0
    },
    {
      "v.vehicle_num": 0
    }
  ]
})

这是Mongo游乐场供您参考。


推荐阅读