我有一个存储在MongoDB中的对象;每个对象都有一个TeamIds
列表。在我的函数中(见下文),我想传入一个teamIds
列表。如果在数据库对象的TeamIds
中找到列表中的任何teamIds
,我希望返回该对象。
例如,在DB中,我有一个包含TeamIds列表的对象,如下所示:
TeamIds: [1213, 1280]
因此,在我的函数中,我将传入teamIds
列表[1213,1215]
。因为teamIds
列表包含1213
,所以我想返回上面的数据库对象。基本上,我需要做一个交集,找出两个数组是否有任何相同的项。如果有,我想返回数据库对象。我只是不确定该怎么做。下面是我的代码:
public async Task<List<MyTeamObject>> FindTeamItems(List<int> teamIds)
{
var collection = _database.GetCollection<MyTeamObject>(collectionName);
var filter = Builders<MyTeamObject>.Filter.In(x => x.TeamIds, teamIds);
var result = await collection.FindAsync<MyTeamObject>(filter);
var list = result.ToList();
return list;
}
当然,上面的代码不起作用。.In
不允许我将数组传递给委托。
我如何才能达到我上面所描述的预期结果?
发布于 2018-07-25 03:53:45
我在搜索MongoDB文档时,碰巧找到了答案:
MongoDB C# 2.5 Driver - AnyIn Filter
public async Task<List<MyTeamObject>> FindTeamItems(List<int> teamIds)
{
var collection = _database.GetCollection<MyTeamObject>(collectionName);
var filter = Builders<MyTeamObject>.Filter.AnyIn(x => x.TeamIds, teamIds);
var result = await collection.FindAsync<MyTeamObject>(filter);
var list = result.ToList();
return list;
}
https://stackoverflow.com/questions/51506002
复制相似问题