如何从另一个列表中的列表中找到任何ID

时间:2018-07-24 19:12:27

标签: c# mongodb

我有一个对象存储在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不允许我将数组传递给委托。

我如何才能达到上述期望的结果?

1 个答案:

答案 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;
}