首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除carrier_orders中没有id字段的所有line_item,可能会有多个carrier_orders

如何删除carrier_orders中没有id字段的所有line_item,可能会有多个carrier_orders
EN

Stack Overflow用户
提问于 2019-10-10 23:52:18
回答 1查看 11关注 0票数 0

我有一个mongo文档,在这个文档中我需要删除所有缺少id的line_items元素。问题是carrier_orders本身是一个数组,line_items也是一个数组。以下是文档的结构:

代码语言:javascript
复制
{
    "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"
}

我尝试了许多查询,并使用下面的查询关闭

代码语言:javascript
复制
db.shipmentFormFieldData.update({"value.carrier_orders.$[].costs.line_items.$[].id":{$exists: false}},{$unset:{"value.carrier_orders.$[].costs.line_items":""}})

我想删除所有缺少id字段的line_items

EN

回答 1

Stack Overflow用户

发布于 2019-10-11 01:27:18

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

代码语言:javascript
复制
db.shipmentFormFieldData.updateMany({},
{
    $pull:{
        "carrierOrder.$[].costs.lineItem":{
            "id":null
        }
    }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58326800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档