所以我对 Node.js 有点陌生。我不明白为什么聚合查询对我不起作用。我在 Mongo Shell 中尝试了相同的查询,效果非常好。 代码如下:
db.collection("companies").aggregate({$match:
{$or:
[{ $and:
[{ left: {$gt: 2}}, {left: {$lt: 11}}]},
{ $and:
[{ right: {$gt: 2}}, {right: {$lt: 11}}]}]}},
{ $group:
{_id:null,
Sum:{$sum: "$earn"}}},
function(err, data){
if (err) throw err;
console.log(data[0]);
console.log(data.value);
console.log(data.Sum);
});
控制台输出:
undefined
undefined
undefined
最佳答案
聚合参数需要是一个数组,因为聚合适用于管道概念,其中最后一个管道的输出将成为当前管道的输入。
db.collection("companies").aggregate([
{$match:
{$or:
[{ $and:
[{ left: {$gt: 2}}, {left: {$lt: 11}}]},
{ $and:
[{ right: {$gt: 2}}, {right: {$lt: 11}}]}]
}},
{ $group:
{_id:null,
Sum:{$sum: "$earn"}}}],
function(err, data){
if (err) throw err;
console.log(data[0]);
console.log(data.value);
console.log(data.Sum);
});
关于javascript - Node.js:查询聚合不起作用(mongodb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46380770/