使用mongoDB C#驱动程序,如何发出runCommand?

时间:2012-06-06 06:18:26

标签: c# .net c#-4.0 mongodb mongodb-.net-driver

这方面似乎缺乏mongoDB API文档。我试图使用聚合函数来获取某个集合中流行标签的数量。这是我希望执行的命令:

db.runCommand(
       { aggregate : "articles", 
         pipeline : [ { $unwind : "$Tags" }, 
                      { $group : { _id : "$Tags", count : { $sum : 1 } }
                      } ]});

当我使用shell执行此操作时,我得到以下内容:

{
    "result": [{
        "_id": "2012",
        "count": 3
    }, {
        "_id": "seattle",
        "count": 5
    }],
    "ok": 1
}

我正在使用c#4.0,所以我想我更愿意把它作为一个动态对象,但我会采取任何我能得到的......

FWIW,我正在使用mongoDB for Windows,32位,v2.1.1(每晚)

2 个答案:

答案 0 :(得分:4)

以下是相应的C#Driver Doc页面:RunCommand()。所以基本上你打电话给Database.RunCommand("MyCommand")。对于需要(多个)属性的更复杂命令的示例,JIRA中的此票证可能会派上用场:CSHARP-478

答案 1 :(得分:1)

在MongoDB CSharp驱动程序2.0.0+中:
我使用以下语法来运行这样的命令:

var command = new CommandDocument
{
    {"aggregate", "TestCollection"},
    {
        "pipeline", new BsonArray
        {
            new BsonDocument {{"$unwind", "$Tags"}},
            new BsonDocument
            {
                {
                    "$group", new BsonDocument
                    {
                        {"_id", "$Tags"},
                        {"count", new BsonDocument {{"$sum", 1}}}
                    }
                }
            }
        }
    }
};

var result = db.RunCommand<BsonDocument>(command)["result"]
    .AsBsonArray.ToList();