我使用express,nodejs,monk。
集合由对象组成:
{_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
}
答案 0 :(得分:2)
Arrgh !!应该早点看到这个。遗憾。
您需要.col
的{{1}}访问者:
.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,所以"深度潜水"到底层" Node Native"收集是必要的。
道歉。