如何将mongo shell命令写入等效的C#语句

如何将mongo shell命令写入等效的C#语句,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我正在尝试使用聚合函数来获得某个集合中流行标记的计数。我只想通过MongoDB for Windows和.Net(C#4.0)驱动程序执行纯MongoDB查询 这是mongo shell查询,我希望执行(请参阅) 我不知道该怎么做。 可能是调用Database.RunCommand(“命令”)或bson_xxxx方法,但我不知道如何使用。 是否可以通过.Net(C#4.0)驱动程序执行纯MongoDB查询?对于聚合,请使用MongoCollection的IEnumerable聚合(Aggrega

我正在尝试使用聚合函数来获得某个集合中流行标记的计数。我只想通过MongoDB for Windows和.Net(C#4.0)驱动程序执行纯MongoDB查询

这是mongo shell查询,我希望执行(请参阅)

我不知道该怎么做。 可能是调用Database.RunCommand(“命令”)或bson_xxxx方法,但我不知道如何使用。
是否可以通过.Net(C#4.0)驱动程序执行纯MongoDB查询?

对于聚合,请使用MongoCollection的IEnumerable聚合(AggregateArgs args)。仅供参考,这是1.9rc中的版本,先前的聚合重载已被弃用,转而使用新的AggregateArgs

Aggregate在c#驱动程序中还没有流畅的构建支持,因此您基本上是为管道中的每个阶段创建BsonDocument实例,并将该文档数组传递给AggregateArgs.pipeline


在“引擎盖”下,这是在使用CommandDocument,但如果驱动程序已经通过MongoCollection的内部RunAggregateCommand处理了它,那么直接使用CommandDocument并没有多大好处。

C驱动程序从版本1.8开始就支持聚合(如果我没记错的话)。关于这个主题有一篇很好的帖子:。如果我用这个MongoDb查询函数调用MongoDb函数,并通过MongoDatabase.Eval()方法在C#中调用该函数,你是否试图避免使用.net BsonDocument类型构建聚合查询?是的。我在Mongo Shell中编写并测试了这个查询。我想知道是否可以像在C#中一样使用这个查询。我会避免重写查询,以免重复测试。用.net BsonDocument类型重新编码查询似乎并不容易。
collection.aggregate({
    $group: { "_id": { $cond: [{$gte: ["$LoadTime", 2000]}, "Slowest", 
                                {$cond: [ {$and: [{$lt: ["$LoadTime", 2000] },{$gte: ["$LoadTime", 1000]}]}, "Slow", 
                                    {$cond: [{$and: [{$lt: ["$LoadTime", 1000]}, {$gte: ["$LoadTime", 500 ]} ]},"Medium","Fast"]}
                                        ]}
                              ]},
              "count": {$sum: 1}   
            }
})