在我的mongoose
数据库中,我有两个模型:Users
和Comments
。
在我的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
的结果中。我错过了什么?
答案 0 :(得分:0)
您没有执行聚合查询。在最后添加函数回调或调用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);
})