我正在使用express,nodejs和尚。
集合包含以下对象:{_id, valueField}
假设_id在插入时被覆盖,集合中5个文档的id在1到5之间。它们都是整数。
这就是我现在正在尝试的-但我认为语法不正确。该函数返回错误500,甚至从不进入console.log(e)。
我想在集合中找到所有_id
大于10的对象。
collection.aggregate([
{ $match: {
"_id":{$gt: 3}
}},
{ $group: {
_id: null,
flow: { $avg: "$value" }
}}
], function (e, docs) {
if (e) {
console.log(e);
return;
}
console.log(docs);
res.json(docs);
});
我之前编写的用于获取所有ID大于10的元素的函数可以正常工作:
collection.find({"_id":{$gt: 3}}, {}, function(e,docs){
res.json(docs);
});
集合内容:
{
"_id": 1,
"value": 10
}
{
"_id": 2,
"value": 5
}
{
"_id": 3,
"value": 4
}
{
"_id": 4,
"value": 12
}
{
"_id": 5,
"value": 10
}
预期结果:
{
"_id": null,
"value": 11
}
最佳答案
啊!应该早点看到这个。抱歉。
您需要.col
的.aggregate()
访问器:
var db = require('monk')('localhost/test');
var junk = db.get('junk');
junk.col.aggregate(
[
{ "$match": { "_id": { "$gt": 3 } } },
{ "$group": {
"_id": null,
"flow": { "$avg": "$value" }
}}
],
function(err,docs) {
if (err) throw err;
console.log( JSON.stringify( docs, undefined, 2 ) );
}
);
由于在本机“ Monk” API下本机不支持
.aggregate()
作为功能,因此需要对基础“ Node Native”集合进行“深入研究”。很抱歉。