从聚合中迭代Mongodb游标

时间:2016-07-25 21:43:05

标签: node.js mongodb

以下是我的node.js后端的代码:

app.get('/getpossibleconnections', auth, function(req, res){
    if (req.authenticated == false){
        res.send("Your session has expired.");
    } else {
        User.aggregate([
            { $match: { _id: { $nin: req.decoded.username.connections } } },
            { $sample: { size: 10 } },
        ]).next(function(err, docs) {
            console.log("horray");
        });
    }
});

我已尝试将next()替换为toArray()each(),如下所示:

http://mongodb.github.io/node-mongodb-native/2.0/tutorials/aggregation/

但是,我每次都会收到同样的错误:

TypeError: User.aggregate(...).next is not a function

为什么我不能用任何类型的函数迭代返回的文档?

是因为User不是集合吗?

1 个答案:

答案 0 :(得分:3)

试试这个:

var cursor = User.aggregate([
    { $match: { _id: { $nin: req.decoded.username.connections } } },
    { $sample: { size: 10 } },
]).cursor().exec();

cursor.each(function(err, doc) {
    //do something with doc
});

Mongoose处理聚合到光标对象的方式与您在链接中发布的Mongodb-native不同。更多信息请访问:mongoose aggregate cursor documentation