如何组合 MongoDB 查找查询的输出?
Posted
技术标签:
【中文标题】如何组合 MongoDB 查找查询的输出?【英文标题】:How to combine output from MongoDB find query? 【发布时间】:2018-03-14 11:44:08 【问题描述】:我正在尝试组合两个函数调用的结果并将一个 json 对象作为输出返回给我的 api 调用。
getUserList 函数重试注册用户列表,averageUserAge 函数返回属于特定年龄组的人的平均年龄
在合并函数中,我想合并两者的输出并返回一个 json 对象。
有人能解释一下我怎样才能做到这一点吗?
请注意,我不是在寻找聚合函数,因为它不会在我的业务案例中产生预期的输出。下面是示例代码,用于演示我正在寻找的内容,因为我的业务案例太复杂而无法解释。
function getUserList(req,res)
userModel.findOne(ageGroup : 'some group',name : 1,email : 1, credits : 1,, function(err, result)
if( err || !result)
console.log("No user found");
else
return result
;
);
function averageUserAge(req,res)
ageModel.findOne(ageGroup : 'some group',email : 1, credits : 1,,
function(err, result)
if( err || !docs)
console.log("No users with a particular age group found");
else
return result
;
);
//Merge the output of two function calls
function merge(req,res)
var result1=getUserList(req,res)
var result2=averageUserAge(req,res)
var mergedResult=//How to merge result1 & result2
return res.json(mergedResult)
【问题讨论】:
combine or merge json object的可能重复 参考这个答案***.com/a/45728310/7635845实际上这个答案与mysqldb有关,代替mysql查询保持mongodb查询和检查。这段代码对我有用我希望这对你在mongodb也有帮助.. 【参考方案1】:你可以使用这个很棒的库 async 或者你可以使用回调
【讨论】:
【参考方案2】:你可以试试这样的:
function merge(req, res)
const result1 = getUserList(req,res);
const result2 = averageUserAge(req,res);
return Promise.all([result1, result2]).then(() =>
return res.send(res1: result1, res2: result2);
).catch(e => res.status(400).send(e));
;
Promise.all
确保 result1
和 result2
分别返回了它们的值。然后,您发回包含 JSON 对象的响应,其中包括您的 res1
和 res2
结果。
【讨论】:
以上是关于如何组合 MongoDB 查找查询的输出?的主要内容,如果未能解决你的问题,请参考以下文章