我需要展开一个数组,以便使用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的东西?
答案 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);")