Mongodb 如何删除承运商订单中没有id字段的所有行项目,可能有多个承运商订单

Mongodb 如何删除承运商订单中没有id字段的所有行项目,可能有多个承运商订单,mongodb,nosql,mongodb-query,Mongodb,Nosql,Mongodb Query,我有一个mongo文档,其中我需要删除所有缺少id的行项目元素。问题是carrier_命令自己一个数组,以及行_项,也是一个数组。 文件结构如下: { "carrierOrder": [ { "id": 1636354, "costs": { "totalAmount": 110, "lineItem": [ {

我有一个mongo文档,其中我需要删除所有缺少id的行项目元素。问题是carrier_命令自己一个数组,以及行_项,也是一个数组。 文件结构如下:

{
    "carrierOrder": [
        {

            "id": 1636354,

            "costs": {
                "totalAmount": 110,
                "lineItem": [
                    {
                        "amount": 110,
                        "deleted": false,
                        "id": 3464888,
                        "price": 55,
                        "qty": 2,
                        "code": {
                            "id": 135431,
                            "key": "1600",
                            "value": "Freight - flat"
                        }
                    }
                ]
            },
            "deleted": true,
            "carrierPO": ""
        },
        {

            "id": 1668540,
            "costs": {
                "totalAmount": 110,
                "lineItem": [
                    {
                        "amount": 110,
                        "deleted": false,
                        "id": 3527307,
                        "price": 55,
                        "qty": 2,
                        "code": {
                            "id": 135431,
                            "key": "1600",
                            "value": "Freight - flat"
                        }
                    },
                    {
                        "amount": 110,
                        "deleted": false,
                        "price": 110,
                        "qty": 1,
                        "code": {
                            "id": 135431,
                            "key": "1600",
                            "value": "Freight - flat"
                        }
                    }
                ]
            },
            "deleted": false,
            "carrierPO": ""
        }
    ],
    "id": 3949038,
    "customId": "31428-26396"
}
我尝试了很多查询,最后我用下面的查询完成了

db.shipmentFormFieldData.update({"value.carrier_orders.$[].costs.line_items.$[].id":{$exists: false}},{$unset:{"value.carrier_orders.$[].costs.line_items":""}})

我想删除id字段缺失的所有行项目

以下查询可以获得预期的输出:

db.shipmentFormFieldData.updateMany({},
{
    $pull:{
        "carrierOrder.$[].costs.lineItem":{
            "id":null
        }
    }
})