我有一个名为Items的集合。 Items集合中的文档有一个名为" LocationId的字段。"如何选择并返回到服务器的所有Item文档,其LocationId与列表,数组等(您喜欢的任何集合)匹配的Location Ids?
为了清楚起见,博士:b 1.有物品收集。答案 0 :(得分:2)
您可以使用lambda表达式构建简单查询,MongoDB.Driver支持它
var collection = database.GetCollection<Item>("Item");
var list = await collection.Find(x => locationIds.Contains(x.LocationId)).ToListAsync();
答案 1 :(得分:0)
我得到了这个解决方案,它适用于较老的驱动程序:
var locations = new BsonValue[] { 1, 2, 3, 4 };
var collection = database.GetCollection<Item>("Item");
var data = collection
.Find(Builders<BsonDocument>.Filter.In("LocationId", locations))
.Project(x => Mapper.Map<BsonDocument, ItemViewModel>(x))
.ToListAsync().Result;
有趣的是,我不知道&#34;新的BsonValue [] {}&#34;确实。猜猜是bson数组。
答案 2 :(得分:0)
这是使用构建器/过滤器的另一种方法。
var ids = new List<Int32> { 1, 2, 3, 4, 5, 6 };
var filter = Builders<Item>.Filter.AnyIn("LocationId", ids);
var collection = database.GetCollection<Item>("Item");
var results = await collection.FindAsync(filter);
var locations = await results.ToListAsync();