使用C#驱动程序的Mongo聚合与集合不同

使用C#驱动程序的Mongo聚合与集合不同,c#,mongodb,aggregation-framework,C#,Mongodb,Aggregation Framework,我在MongoDB中有以下工作汇总报表: db.Forms.aggregate( [ { $match: { Id: { $nin: db.Forms.distinct("Id", {"Status": "DELETE"}, {Id: 1}) } }}, { $group: { _id: "$Id", lastModifiedId: { $last: "$_id" } } } ]).result 该语句选择在Forms表中没有删除记录的所有表单,并返回其上次修改的行 我想知道的是:如何使用Mo

我在MongoDB中有以下工作汇总报表:

db.Forms.aggregate( [
{ $match: { Id: { $nin: db.Forms.distinct("Id", {"Status": "DELETE"}, {Id: 1}) } }},
{ $group: { _id: "$Id", lastModifiedId: { $last: "$_id" } } }
]).result
该语句选择在Forms表中没有删除记录的所有表单,并返回其上次修改的行

我想知道的是:如何使用MongoDB C#驱动程序编写上面的聚合语句?这就是我到目前为止所做的:

var aggregate = _forms.Aggregate()
//.Match(new BsonDocument { { "Id", new BsonDocument("$nin", "db.Forms.distinct(\"Id\", {\"Status\": \"DELETE\"}, {Id: 1})") } })
.Group(new BsonDocument { { "_id", "$Id" }, { "lastModifiedId", new BsonDocument("$last", "_id") } });

var aggregateResults = aggregate.ToListAsync().Result.ToList(); 
我只需要整理一下匹配语句

我看过一些关于聚合的文章,我理解了这个概念(我想),但是“db.Forms.distinct”是我遇到问题的地方,我发现没有一篇文章处理过这个场景

如果有更好的方法,请告诉我


谢谢大家!

您需要将
.distinct()
作为单独的操作运行,并使用从其结果返回的数组作为
$nin
的参数。这就是壳牌公司在这里真正做的事情。查询不是“lnline”执行的,而是“评估”的,并在将结果发送到服务器之前将其返回到管道文档中。嗨,Blakes。再次感谢你的帮助,这是有道理的,我认为这将是解决办法,但我只是想确定一下。非常感谢。您需要将
.distinct()
作为单独的操作运行,并使用从其结果返回的数组作为
$nin
的参数。这就是壳牌公司在这里真正做的事情。查询不是“lnline”执行的,而是“评估”的,并在将结果发送到服务器之前将其返回到管道文档中。嗨,Blakes。再次感谢你的帮助,这是有道理的,我认为这将是解决办法,但我只是想确定一下。谢谢。