美好的一天,有人可以建议我应该使用哪种异步功能吗? 在我的情况下,我需要输出每组的第一个成员。 ***注意这只是我的程序流程的一个例子。
/*
Grouplist groupmember
Id | name id | name | group
1 | group1 1 | John | 1
2 | group2 2 | James | 1
3 | group3 3 | Paul | 3
4 | Angel | 2
5 | Anne | 2
6 | Jane | 3
looking for output like this
id | name | group
1 | John | 1
4 | Angel | 2
3 | Paul | 3
*/
var name = [];
Grouplist.find( function(err, grouplist){
for(var x=0;x<=grouplist.length-1; x++){
groupmember.find({id:grouplist[x].id}).limit(1).exec(
function callBack(err,results){
if(err) console.log(err);
name[x] = results.name;
})
}
})
答案 0 :(得分:3)
您可以使用mongodb聚合运算符在一个查询中获得结果:
groupmember.aggregate(
[
{
$group:
{
_id: "$group", //grouping key
member: { $first: "$$CURRENT" } //return the first matched document
}
},
{
$project : //project the document to top-level
{
_id: "$member._id",
name: "$member.name",
group: "$member.group"
}
}
],
function(err, members){
console.log(members)
}
)