使用`in`运算符从ID列表中查找所有MongoDB文档

时间:2018-11-14 18:13:08

标签: c# mongodb mongodb-query mongodb-.net-driver

我正在尝试通过ID查找集合中的文档。建议的大多数答案都使用与文档匹配的C#类。类似于here

var filter = Builders<Product>.Filter
    .In(p => p.Id, productObjectIDs);

我没有相应的C#类,因此我正在使用BsonDocument

public async Task<IEnumerable<BsonDocument>> GetData(IEnumerable<int> documentIds)
{
    var collection = _mongoDatabase.GetCollection<BsonDocument>("mycollection");

    // how do set filter here
    var filterBuilder = Builders<BsonDocument>.Filter.In<int>("???????", documentIds);

    var projection = Builders<BsonDocument>.Projection
       .Include("_id")
       .Include("status")
       .Include("units");

    var result = await collection.Find(filterBuilder).Project<BsonDocument>(projection).ToListAsync().ConfigureAwait(false);
    return result;
}

我不确定如何使用in运算符设置过滤器?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此过滤器:

var filter = new BsonDocument("_id", new BsonDocument("$in", new BsonArray(documetIds)));

基于this answer