C-MongoDB如何按元素值从多个嵌套数组中删除项?
我在mongo db集合中有这个JSON结构:C-MongoDB如何按元素值从多个嵌套数组中删除项?,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我在mongo db集合中有这个JSON结构: { "Id":"123", "Product": "test", "Tags":[ { "Name": "name", "Categories": [ { "Name": "test", "OtherValue": ...
{
"Id":"123",
"Product": "test",
"Tags":[
{
"Name": "name",
"Categories": [
{
"Name": "test",
"OtherValue": ...
}
]
},
{
"Name": "name",
"Categories": [
{
"Name": "test",
"OtherValue": ...
}
]
}
]
}
有没有办法通过项的名称属性从所有嵌套类别数组中删除项
例如,删除Name==test的所有类别
我试过这样的方法:
var filter = Builders<Item>.Filter.Eq(item => item.Id, "123");
var update = Builders<Item>.Update.Pull("Tags.$[].Categories[i]", "test");
var arrayFilters = new List<ArrayFilterDefinition>
{
new JsonArrayFilterDefinition<Setup>("{\"i.Name\": \"test\"}")
};
var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters };
await Collection.UpdateOneAsync(filter, update, updateOptions);
但它不起作用。。。
有什么想法吗?试试变体
使用微调:var update=Builders.update.pullfilterttags.$[].Categories,Builders.Filter.EqName,test;只需将[]从Categories[]删除到Categories即可
var filter = Builders<Item>.Filter.Eq(item => item.Id, "123");
var update = Builders<Item>.Update.PullFilter("Tags.$[].Categories", Builders<BsonDocument>.Filter.Eq("Name", "test"));
await Collection.UpdateOneAsync(filter, update);