Node.js-MongoDB-是否有一种简单的方法来获得分组/汇总结果?

时间:2020-09-09 13:27:41

标签: node.js mongodb

我有一个调用mongodb的节点/快速服务器。我尝试发出一个汇总请求,并且这种方法行得通,但是我需要使用.toArray()。then()来获得结果,这感觉很奇怪。当然还有其他方法吗?

app.post('/test', (req, res) => {
    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";
    MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true },function(err, db) {
        if (err) throw err;
        var dbo = db.db("mydb");

        var aggregateConditions = [{$match : { id: 12 }}, {$group : { _id: 'test1', total_id: { $sum: 'id'}}}];
        dbo.collection("customers").aggregate(aggregateConditions, function(err, res) {
            if (err) {
                throw err;
            }else {
                res.toArray().then(x => console.log(x));

            }
        });

    });
    res.send({'test': 'Test executed'});
});

=> [{_id:'test1',total_id:0}]

结果也是错误的。我希望total_id为12,因为我的文档集中有一个{id:12}的文档。

编辑: 多亏了ColdHands:

官方文档指定使用Promise然后使用function,因为官方文档说:您不能从Function返回游标。而是使用cursor.next()或cursor.toArray()评估游标并返回结果

那是我需要知道的。

0 个答案:

没有答案