使用 MongoDB C# 驱动程序在嵌套数组上使用过滤器生成器进行查询
问题:使用 MongoDB C# 驱动程序在嵌套数组上使用过滤器生成器进行查询 考虑以下存储为文档的对象结构: public class Foo { public string Id { get; set; } public ICollection<FooBar> Bars { get; set; } // ... } public class FooBar { public string Bar
·
问题:使用 MongoDB C# 驱动程序在嵌套数组上使用过滤器生成器进行查询
考虑以下存储为文档的对象结构:
public class Foo
{
public string Id { get; set; }
public ICollection<FooBar> Bars { get; set; }
// ...
}
public class FooBar
{
public string BarId { get; set; }
// ...
}
使用带有驱动程序的 LINQ 样式查询,我可以Find
所有包含FooBar``BarId
的Foo
如下所示:
var foos = await m_fooCollection.Find( f => f.Bars.Any( fb => fb.BarId == "123") ).ToListAsync();
如何使用FilterDefinitionBuilder
而不是Find
上的内联 LINQ 来实现相同的查询?
解答
您需要执行的查询使用$elemMatch
查询运算符。
因此,此查询使用 lambda 表达式
var findFluent = collection.Find(f => f.Bars.Any(fb => fb.BarId == "123"));
等效于使用FilterDefinitionBuilder
进行此查询:
var findFluent = collection.Find(Builders<Foo>.Filter.ElemMatch(
foo => foo.Bars,
foobar => foobar.BarId == "123"));
更多推荐
已为社区贡献32870条内容
所有评论(0)