C# 从属性组合获取所有文档

C# 从属性组合获取所有文档,c#,.net,mongodb,mongodb-query,mongodb-.net-driver,C#,.net,Mongodb,Mongodb Query,Mongodb .net Driver,这可能很简单,但我很难弄明白: 我有一个列表,其中包含我需要搜索的产品列表,我希望在一个请求中获得该列表中表示的所有产品的所有文档 Item1是产品的SKU,但由于可能存在重复的SKU,我还有Item2,其中包含它应该查找的供应商ID 我的挑战是使用MongoDB C#驱动程序构建查询,以获取数据,有人能帮我吗 我使用的是新的2.3.0驱动程序版本,在这个主题上没有太多现有的帮助 以下是我目前掌握的代码: var collection = _database.GetCollection<S

这可能很简单,但我很难弄明白:

我有一个
列表
,其中包含我需要搜索的产品列表,我希望在一个请求中获得该列表中表示的所有产品的所有文档

Item1
是产品的SKU,但由于可能存在重复的SKU,我还有
Item2
,其中包含它应该查找的供应商ID

我的挑战是使用MongoDB C#驱动程序构建查询,以获取数据,有人能帮我吗

我使用的是新的2.3.0驱动程序版本,在这个主题上没有太多现有的帮助

以下是我目前掌握的代码:

var collection = _database.GetCollection<StockDoc>("stock");
var result = collection.Find().ToListAsync().Result;
var collection=\u database.GetCollection(“stock”);
var result=collection.Find().ToListAsync().result;

我假设您的StockDoc类为:

public class StockDoc
{
    public ObjectId Id { get; set; }
    public string SKU { get; set; }
    public string SupplierId { get; set;}
}
我将编写一个帮助方法,为列表中的每个元组创建过滤器(它是和过滤器:
SKU=Item1&&SupplierId==Item2
):

之后,您可以使用此筛选器获取数据:

collection.Find(filter).ToList()
var p = new List<Tuple<String, String>> { 
       Tuple.Create("a", "1"), 
       Tuple.Create("b", "1"), 
       Tuple.Create("d", "2")};

var filter = Builders<StockDoc>.Filter.Or(p.Select(BuildFilter));
collection.Find(filter).ToList()