为了账号安全,请及时绑定邮箱和手机立即绑定

如何迭代 mongo db 文档并更新嵌套数组

如何迭代 mongo db 文档并更新嵌套数组

Go
SMILET 2022-08-01 16:55:54
我需要删除mongodb中2d文档结构数组中的条目。示例如下{    "_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" : ""}从两个数组。pName:Test1 可用于将其过滤掉。可用于查找此内容并将其删除的查询是什么?我可以做一个查找,然后循环访问集合,找到匹配的条目,然后更新文档。我必须使用Go mongodb驱动程序执行此操作由于这对我来说有点复杂,因为我是golang和mongo db的新手,所以我被困住了。更新:1.按照建议在 update() 调用中尝试,但不起作用。{$pull: {workflows: {pName:"Test1"}}}, {multi: true}2.尝试过类似的东西db.getCollection('workflows').update({_id:ObjectId('5ffef283f1f06ff8524aa2c2')}, {$pull:{workflows: { $elemMatch: {pName:'Test2'}}}} )这将删除整个数组,如下所示,因为 Test2 存在于其中。我只需要删除 Test2 文档[     {        "pName" : "Test1",        "wName" : "TestApp_Test1",        "agent" : ""    },     {        "pName" : "Test2",        "wName" : "TestApp_Test2",        "agent" : ""    }]
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

我会给你一个提示,因为你是新手,你还没有发布尝试过的东西。

您可以使用 来删除符合条件的文档。$pull

类似示例

你可以使用官方的mongodb驱动程序进行go或最常用的gopkg

示例 SO 帖子



查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信