使用Javascript Mongodb驱动程序进行聚合

时间:2017-02-09 12:23:00

标签: javascript node.js mongodb mongodb-query

我正在尝试从平台获胜的每个文件的每个文件名中提取Mongodb的汇总数据

我的数据格式如下

[
{ "_id" : { "platform" : "mac", "filename" : "f1.json", "version" : "1.4.14" }, "avgSecs" : 15 },
{ "_id" : { "platform" : "win", "filename" : "f2.json", "version" : "3000.0.0_developer" }, "avgSecs" : 1217 },
{ "_id" : { "platform" : "win", "filename" : "f3.json", "version" : "1.4.14" }, "avgSecs" : 1711 },
{ "_id" : { "platform" : "win", "filename" : "f3.json", "version" : "3000.0.0_developer" }, "avgSecs" : 1191 }
]

我的代码如下

  [ {$sort:{filename:1}},{$match:{platform:"win"}},{ $group:{ _id: {filename:"$filename", version:"$version"}, avgSecs: {$avg:"$int_secs"} } }]
使用JS apis发送到mongodb的

如下

        collection.aggregate(aggQuery).toArray(function(err,docs){
            assert.equal(null,err)
            resolve(docs);
        })

但是我没有得到解析和聚合数据,但完整的数据来自db。

我已经检查了相同的聚合查询与mongodb shell一起正常工作。我不确定JS api有什么问题。我是以正确的方式使用它吗

1 个答案:

答案 0 :(得分:1)

好的发现了。

AggQuery是在期望一个数组对象时以字符串形式发送的。 制作对象数组,现在结果如预期。