使用Mongo中的Collection.Group()进行放松

时间:2014-05-14 21:43:25

标签: mongodb mongodb-.net-driver

我需要展开一个数组,以便使用mongo Collection.Group()方法在一些现有代码中进行分组。

我有一个类似的文件:

{
    "_id" : "5373c4fdcb080a06d471c07b",
    "Form" : "Form 1",
    "Values" : {
        "Name" : "Bob Smith",
        "FavColors" : [ 
            "green",
            "blue"
        ]
    }
}

我需要通过FavColors展开FavColors数组和组,以获得这样的计数:

绿色1
蓝色1

我知道这可以很容易地使用聚合框架完成,但无论如何使用C#驱动程序中的Collection.Group()或者你在mongo shell中的db.Collection.Group()来展开数组?即。在.group运算符的聚合框架中是否有类似于$ unwind的东西?

1 个答案:

答案 0 :(得分:1)

您就是这样做的:

function groupByFavColors(host){
 var conn = new Mongo(host);
 var db = conn.getDatabase("DB-NAME");

 var res = db.product.aggregate([
     {
         // unwind the array
         $unwind: '$Values.FavColors',
     },
     {
         // group by..
         $group: {
             _id: '$Values.FavColors',

             num_sold: {
                 $sum: 1
             }
         }
     }
 ]);

 printjson(res);

}

print("usage: groupbyFavColors(string host);")