我正在尝试从Mongodb中提取每个文件名的聚合数据,每个版本的平台都是win
我的数据格式如下
[
{ "_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);
})但是我没有得到解析和聚合数据,而是完成了数据库中的数据。
我检查过同样的聚合查询在mongodb shell中运行得很好。我不确定JS api有什么问题。我使用它的方式正确吗
发布于 2017-02-09 20:48:05
好了找到了。
AggQuery应为数组对象,但却以字符串的形式发送。创建了对象数组,现在结果与预期一致。
https://stackoverflow.com/questions/42136627
复制相似问题