使用$ sample的MongoDB和Node.js聚合未返回文档

时间:2019-02-08 04:21:14

标签: node.js mongodb aggregate-functions

我是Nodejs和mongoDB的新手,我正在尝试运行一个聚合函数,该函数将从数据库中选择一个随机文档并返回它。我在互联网上四处张望,以弄清我做错了什么,从中我可以看到我的代码看起来应该是正确的。但是由于某种原因,当我尝试将结果打印到控制台时,它给了我一个聚合光标对象,而我在其中的任何地方都找不到想要的文档。这是我的聚合函数代码。

//get a random question
route.get('/question/random', function (req, res) {
database.collection('questions').aggregate(
    [ { $sample: { size: 1} } ],
    function(err, result) {
        console.log(result);
    })
})

1 个答案:

答案 0 :(得分:1)

这是因为aggregation method返回了AggregationCursor,除非您对其进行遍历,否则它不会返回任何文档。

对于简单的迭代,您可以执行以下操作:

database.collection('questions').aggregate([{$sample: {size: 1}}]).forEach(console.log);

光标上的forEach()方法将对其进行迭代,并在此示例中将其打印到控制台。