【问题标题】:Remove an array if exists inside an array in mongodb如果存在于 mongodb 的数组中,则删除数组
【发布时间】:2020-05-20 09:28:53
【问题描述】:
{
"_id" : ObjectId("5cca927ed5494b0"),
"userName": "1234",
"rcReviews": [{
        "userName": "qwert",
        "finalReview": "qtrwyw",
        "dField": [{
                "name": "t2",
                "status": "Not Verified",
                "reviewComment": "asdfag"
            },
            {
                "status": "Not Verified",
                "reviewComment": "asegqrt",
                "name": "t13"
            },
            {
                "name": "c452",
                "status": "Not Verified",
                "reviewComment": "gaeqrtqa "
            },
            {
                "status": "Not Verified",
                "reviewComment": "tyqiqooqa",
                "name": "c13"
            }
        ]
    },
    {
        "userName": "1517",
        "finalReview": "wsywx",
        "dField": [{
                "status": "Not Verified",
                "reviewComment": "aswrrwgqrt",
                "name": "t113"
            },
            {
                "name": "c1516",
                "status": "Not Verified",
                "reviewComment": "gaeqredectqa "
            },
        ]
    }
]}

我想要一个检查 dField 数组键是否存在于 rcReveiws 数组中的查询。如果它存在,那么它已经删除了 dField 数组,其他内容应该在那里只有 dField 数组应该被删除

【问题讨论】:

  • 嗨!你试过什么?
  • db.newcopy.updateMany({ "rcReviews": { "$elemMatch": { "$elemMatch": { "dField": { "$exists": true } } } }, { "$unset": { "rcReviews.$[].$[].dField": "" }} ) 我试过这样。感谢您的回复

标签: javascript mongodb mongodb-query aggregation-framework


【解决方案1】:

您可以使用以下查询。已经用您提供的数据进行了测试

db.testmongo.update({"rcReviews.dField":{$exists:true}},{$unset:{"rcReviews.$[].dField":""}},{multi:true})

更改集合名称以匹配您的名称。 查询检查在rcReviews 数组中包含dField 属性的记录。它更新该数组中的所有对象并使用 unset 删除 dField 属性

【讨论】:

  • 谢谢 Abhishek Kothari。我还有一个疑问,如果我想删除数组中的另一个键并且该键是类型对象,那么如果我更改名称就足够了,不需要更改整个查询??
猜你喜欢
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多