我需要删除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" : ""
}
]
慕标5832272
相关分类