我想创建一个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"
]
}
如何创建将在服务器端而不是客户端端解决的查询?
使用聚合框架不是强制性的。
答案 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;
}