我有一个对象存储在MongoDB中;每个对象都有一个TeamIds
的列表。在我的函数(请参见下文)中,我想传递teamIds
的列表。如果在数据库对象的teamIds
中找到列表中的任何TeamIds
,我想返回该对象。
例如,在数据库中,我有一个带有TeamId列表的对象,如下所示:
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
不允许我将数组传递给委托。
我如何才能达到上述期望的结果?
答案 0 :(得分:0)
我正在搜索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;
}