【问题标题】:why does my aggregate ($lookup) function does not work in mongoose and node.js?为什么我的聚合 ($lookup) 函数在 mongoose 和 node.js 中不起作用?
【发布时间】:2017-02-26 22:54:53
【问题描述】:

在我的 mongoose 数据库中,我有两个模型:UsersComments

在我的node.js 代码中,我有:

var Comment = require('./../models/commentsModel.js');
var User = require('./../models/usersModel.js');  

现在我想用$lookup 构造一个查询以从Comments 和相应的Users 返回结果(当前Comments 包含一个字段user_id)。这是我目前所拥有的:

function executeQuery(query, callback) {
    query = Comment.find(query);

    Comment.aggregate([{$lookup:
    { from: "users",
        localField: "user_id",
        foreignField:"_id",
        as: "user"
    }}]);

    query.exec(function(err, comments){
        if(err) {
            callback(err);
            return;
        }
    return callback(null, comments);
    });
}

但我没有看到来自User 的任何数据附加到来自Comment 的结果中。我错过了什么?

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    您没有执行聚合查询。在末尾添加函数回调或调用exec(function(err,res))

    Comment.aggregate([{
        $lookup: {
            from: "users",
            localField: "user_id",
            foreignField: "_id",
            as: "user"
        }
    }],function(err,res){
        console.log(res);
    });
    

    或者

    var aggregateQuery = Comment.aggregate([{
        $lookup: {
            from: "users",
            localField: "user_id",
            foreignField: "_id",
            as: "user"
        }
    }]);
    aggregateQuery.exec(function(err,res){
        console.log(res);
    })
    

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 2018-12-20
      • 1970-01-01
      • 2017-08-20
      • 2019-01-21
      • 1970-01-01
      • 2017-04-15
      • 2020-03-07
      • 1970-01-01
      相关资源
      最近更新 更多