如何将此控制台mongodb查询转换为C#mongo驱动程序v2?

时间:2019-08-21 13:21:46

标签: c# mongodb linq aggregation-framework

我想创建一个mongodb C#驱动程序2查询,其查询结果与以下mongo cli命令几乎相同:

var dups =
    (from item1 in list1
    join item2 in list2 on item1.ID equals item2.ID
    select item1.ID)
   .ToArray();

list1.RemoveAll(item => dups.Contains(item.ID));
list2.RemoveAll(item => dups.Contains(item.ID));

我正在寻找的输出是:

db.myCollection.aggregate([{$group: { _id: null , "ids" : {$push: {$toString: "$_id"} } } }])

我已经使用Linq函数的Mongo驱动程序重载实现了这一步

{ 
    "ids" : 
    [ 
        "5cde5520f838ba2b580852ca", 
        "5d3f012c555aef66082917b0", 
        "5d527092555aef4f28fee38b", 
        "5d52712f555aef4f28fee38c", 
        "5d52719e555aef4f28fee38d" 
    ] 
}

如何创建将在服务器端而不是客户端端解决的查询?

使用聚合框架不是强制性的。

1 个答案:

答案 0 :(得分:2)

您可以找到所有_id并将它们返回到这样的列表中:

public static List<string> GetIds()
{
    var context = new MyContext();
    var builder = Builders<MyCollection>.Filter;
    var filter = builder.Empty;
    var ids = context.MyCollection.Find(filter).Project(x => x.Id.ToString()).ToList();
    return ids;
}