嵌套数据中的mongo db删除密钥

发布于 2025-01-24 00:02:51 字数 3369 浏览 2 评论 0原文

Mongo数据库数据在这里我想删除report_data的密钥 因此,II将发送key = ber2,report_name =删除测试,name =新文件夹它将仅从该报告和文件夹

    {
        "_id" : ObjectId("6267b4554cbd527bee4c6b3a"),
        "structure" : [
            {
                "name" : "New folder",
                "values" : [
                    {
                        "report_name" : "mixll",
                        "report_heading" : "mixll",
                        "background" : "#f0f2f5",
                        "grid" : false,
                        "report_data" : {
                            "mixchch" : {
                                "datasource" : "New_DGR",
                                "source" : "10",
                                "title" : "mix chch"
                            }
                        },
                        "unique_report_name" : "mixll"
                    },
                    {
                        "report_name" : "Delete test",
                        "report_heading" : "Delete test",
                        "background" : "#f0f2f5",
                        "grid" : false,
                        "report_data" : {
                            "ber2" : {
                                "data" : null,
                                "datasource" : "Restest_0423",
                                "source" : "10",
                                "title" : "ber 2"
                            },
                            "piechart" : {
                                "data" : null,
                                "datasource" : "Restest_0423",
                                "source" : "10",
                                "title" : "pie chart"
                            },
                            "lnechart" : {
                                "data" : null,
                                "datasource" : "Restest_0423",
                                "source" : "10",
                                "title" : "lne chart"
                            }
                        },
                        "unique_report_name" : "Deletetest"
                    },
                ],
                "type" : 1
            },
            {
                "name" : "newdkdd",
                "values" : [
                    {
                        "report_name" : "aldkkd",
                        "report_heading" : "aldkkd",
                        "background" : "#f0f2f5",
                        "grid" : false,
                        "report_data" : {
                            "sslsls" : {
                                "datasource" : "alias",
                                "source" : "3",
                                "title" : "sslsls"
                            }
                        },
                        "unique_report_name" : "aldkkd"
                    }
                ],
                "type" : 1
            }
        ],
        "unique_report_id" : 986219
    }

pymongo mongo询问

mycol.update_one({
    "structure.name": folder_name
    },
    {
    "$pull": {
            "structure.$[structure].values": {
            "report_name": report_name,
        }
    }},
    array_filters= [
        {
            "structure.name": folder_name
        }
    ],
upsert=True)

我使用上述查询来删除整个报告中, 将仅删除recort_data的键ber2。 我如何从report_data键中删除一个键,

请看看

Mongo database data here i wants to delete key of report_data
So i i will send key= ber2, report_name=Delete test, name=New folder it will delete only key ber2 from report_data of that report and folder

    {
        "_id" : ObjectId("6267b4554cbd527bee4c6b3a"),
        "structure" : [
            {
                "name" : "New folder",
                "values" : [
                    {
                        "report_name" : "mixll",
                        "report_heading" : "mixll",
                        "background" : "#f0f2f5",
                        "grid" : false,
                        "report_data" : {
                            "mixchch" : {
                                "datasource" : "New_DGR",
                                "source" : "10",
                                "title" : "mix chch"
                            }
                        },
                        "unique_report_name" : "mixll"
                    },
                    {
                        "report_name" : "Delete test",
                        "report_heading" : "Delete test",
                        "background" : "#f0f2f5",
                        "grid" : false,
                        "report_data" : {
                            "ber2" : {
                                "data" : null,
                                "datasource" : "Restest_0423",
                                "source" : "10",
                                "title" : "ber 2"
                            },
                            "piechart" : {
                                "data" : null,
                                "datasource" : "Restest_0423",
                                "source" : "10",
                                "title" : "pie chart"
                            },
                            "lnechart" : {
                                "data" : null,
                                "datasource" : "Restest_0423",
                                "source" : "10",
                                "title" : "lne chart"
                            }
                        },
                        "unique_report_name" : "Deletetest"
                    },
                ],
                "type" : 1
            },
            {
                "name" : "newdkdd",
                "values" : [
                    {
                        "report_name" : "aldkkd",
                        "report_heading" : "aldkkd",
                        "background" : "#f0f2f5",
                        "grid" : false,
                        "report_data" : {
                            "sslsls" : {
                                "datasource" : "alias",
                                "source" : "3",
                                "title" : "sslsls"
                            }
                        },
                        "unique_report_name" : "aldkkd"
                    }
                ],
                "type" : 1
            }
        ],
        "unique_report_id" : 986219
    }

Pymongo mongo query

mycol.update_one({
    "structure.name": folder_name
    },
    {
    "$pull": {
            "structure.$[structure].values": {
            "report_name": report_name,
        }
    }},
    array_filters= [
        {
            "structure.name": folder_name
        }
    ],
upsert=True)

I am using above query to delete it is deleting the entire report
How can i delete only one key from the report_data key

Please take a look

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巴黎夜雨 2025-01-31 00:02:51

使用过滤的位置操作员和ArrayFilters思考,您需要使用report_data.ber2指定密钥,以通过$ unset删除相应的字段。

db.collection.update({
  "structure.name": "New folder"
},
{
  "$unset": {
    "structure.$[structure].values.$[value].report_data.ber2": ""
  }
},
{
  arrayFilters: [
    {
      "structure.name": "New folder",
      
    },
    {
      "value.report_name": "Delete test"
    }
  ]
})

Think with filtered positional operator and arrayFilters, you need to specify the key with report_data.ber2 to remove the respective field via $unset.

db.collection.update({
  "structure.name": "New folder"
},
{
  "$unset": {
    "structure.$[structure].values.$[value].report_data.ber2": ""
  }
},
{
  arrayFilters: [
    {
      "structure.name": "New folder",
      
    },
    {
      "value.report_name": "Delete test"
    }
  ]
})

Sample Mongo Playground

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文