我试图返回一个文档,这个文档应该被过滤,只包含一个项目的数组。我看到了很多类似的问题,但没有一个处理动态查询。可能有几个约束条件,所以我必须能够继续添加过滤器。
这是我的尝试,它返回一个文档,其中的数组包含条形码,并且整个数组的内容都被包括在内。
{
"_id" : ObjectId("6058f722e9e41a3d243258dc"),
"fooName" : "foo1",
"fooCode" : 1,
"bar" : [
{
"barCode" : "123",
"barName" : "Rick's Cafe",
"baz" : [
{
"bazId" : "00",
"bazDescription" : "Ilsa"
},
{
"bazId" : "21",
"bazDescription" : "Victor"
}
]
},
{
"barCode" : "456",
"barName" : "Draco Tavern",
"baz" : [
{
"bazId" : "00",
"bazDescription" : "Rick Shumann"
}
]
}
]
}
这是我的尝试,它返回一个文档,其中的数组包含条形码,并且整个数组的内容都被包括在内。
Expression<Func<Foo, bool>> filter = x => x.FooCode == 1;
string barCode = "456"
if (!String.IsNullOrEmpty(barCode))
{
Expression<Func<Foo, bool>> newPred =
x => x.Bar.Any(s => s.BarCode == barCode);
filter = filter.CombineAnd(newPred);
}
var fooQuery =
_fooCollection
.Find(filter);
如果指定了数组元素,如何删除不匹配的数组元素?