如何使用$ pull在mongodb中删除数组中的文档

阿巴斯

我有以下文件结构

{
    "_id" : ObjectId("5ffef283f1f06ff8524aa2c2"),
    "applicationName" : "TestApp",
    "pName" : "",
    "environments" : [],
    "stages" : [],
    "createdAt" : ISODate("2021-01-15T09:51:35.546Z"),
    "workflows" : [ 
        [ 
            {
                "pName" : "Test1",
                "wName" : "TestApp_Test1",
                "agent" : ""
            }, 
            {
                "pName" : "Test2",
                "wName" : "TestApp_Test2",
                "agent" : ""
            }
        ], 
        [ 
            {
                "pName" : "Test1",
                "wName" : "TestApp_Test1",
                "agent" : ""
            }
        ]
    ],
    "updatedAt" : Date(-62135596800000)
}

我希望删除出现的

{
        "pName" : "Test1",
        "wName" : "TestApp_Test1",
        "agent" : ""
}

因此,生成的文档应类似于

{
        "_id" : ObjectId("5ffef283f1f06ff8524aa2c2"),
        "applicationName" : "TestApp",
        "pName" : "",
        "environments" : [],
        "stages" : [],
        "createdAt" : ISODate("2021-01-15T09:51:35.546Z"),
        "workflows" : [ 
            [ 
                {
                    "pName" : "Test2",
                    "wName" : "TestApp_Test2",
                    "agent" : ""
                }
            ]
        ],
        "updatedAt" : Date(-62135596800000)
    }

我已经尝试过以下mongo查询

db.getCollection('workflows').update({_id:ObjectId('5ffef283f1f06ff8524aa2c2')}, {$pull:{workflows: { $elemMatch: {pipelineName: 'Test1'}}}} )

因为匹配了Test1,所以这将从包括Test2的工作流字段中删除所有文档。

我们如何只删除Test1的条目并保留其他条目?

R2D2

您可以使用位置运算符“ $ []”来实现:

db.getCollection('workflows').update({_id: ObjectId("5ffef283f1f06ff8524aa2c2")  }, {$pull: {"workflows.$[]":{pName:"Test1"  } }  } )

但是架构看起来有些奇怪,并且在更新之后,如果所有元素都在子数组中删除,则工作流中将有空数组。要修复空的子数组,您将需要执行第二次操作以将其删除:

db.getCollection('workflows').update({_id: ObjectId("5ffef283f1f06ff8524aa2c2")  }, {$pull: {"workflows":[]  } }   )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB使用$ pull删除数组子文档中的字典

来自分类Dev

如何使用php从mongodb中的文档中删除或删除数组数据

来自分类Dev

如何从Mongodb中删除数组元素

来自分类Dev

如何在mongoDB中删除数组中的数组?

来自分类Dev

如何从子子文档中删除数组元素

来自分类Dev

Casbah MongoDB,如何在单个操作中同时向多个文档添加和删除数组的值?

来自分类Dev

如何删除数组中的[“”]?

来自分类Dev

如何在Mongodb / Golang中删除数组项?

来自分类Dev

MongoDB:使用$ lookup localField删除数组中的字段

来自分类Dev

MongoDB:如何从嵌套数组中的文档中删除对象

来自分类Dev

使用Doctrine ODM从mongodb文档中的数组中删除项目

来自分类Dev

如何使用Javascript从数组中删除数组?

来自分类Dev

如何使用Mongoengine从MongoDB中删除文档?

来自分类Dev

使用$ pull在MongoDB中删除一个(子)数组

来自分类Dev

在MongoDB中,如何安全删除包含空数组的文档?

来自分类Dev

如何删除数组中的项目?

来自分类Dev

如何从集合中删除数组?

来自分类Dev

如何从子数组中删除数据?

来自分类Dev

如何删除数组值中的空间?

来自分类Dev

如何实现删除数组中的对的方法

来自分类Dev

如何删除数组中对象的键

来自分类Dev

如何从集合中删除数组?

来自分类Dev

如何删除数组元素中的空格?

来自分类Dev

如何删除数组中的值?

来自分类Dev

PHP如何删除数组中的值

来自分类Dev

如何从 Laravel 的会话中删除数组

来自分类Dev

如何删除数组中的重复项?

来自分类Dev

使用Lodash删除数组中的元素

来自分类Dev

使用_.Omit删除数组中的项目

Related 相关文章

热门标签

归档