如何从users方案中获取用户名及其products产品的数量
产品:
{
_id : ObjectId(5ab548d8bea65e21c413766f),
userid: 5ab425c6f5bff145304092f7,
product_name: "aaa",
__v:0
},{
_id: ObjectId(5ab7daa92ade533790268f48),
userid: 5ab655bbb94733156c438112,
product_name: "bbb",
__v:0
},{
_id: ObjectId(5aba43ef0a5c243330237bd5),
userid: 5ab425c6f5bff145304092f7,
product_name: "ccc",
__v:0
}用户:
{
_id: ObjectId(5ab425c6f5bff145304092f7),
username:"cccc",
email:"cccc@gmail.com",
__v:0
},{
_id:ObjectId(5ab655bbb94733156c438112),
username:"rrrr",
email:"rrrr",
__v:0
}我希望结果如下:
[ { _id: { username: 'rrrr' } , count: 1},
{ _id: { username: 'cccc' } , count: 2} ]现在,我从这个开始:
products.aggregate([
{$lookup:{
from: "users",
localField: "ObjectId(userid)",
foreignField: "ObjectId(_id)",
as: "users"
}},
{"$group" : {_id:{userid:"$userid" }, count:{$sum:1} } }
], function(err, result) {
console.log(result);
if(err){ res.status(400).json({ success: false, message:'Error processing request '+ err }); }
res.status(201).json({
success: true,
data: result
});
}
);脚本返回以下值:
[ { _id: { userid: '5ab655bbb94733156c438112' }, count: 1 },
{ _id: { userid: '5ab425c6f5bff145304092f7' }, count: 2 } ]字段用户I同意,但我希望您在这里具有用户名属性。如何修改剧本?
发布于 2018-03-27 13:51:25
您可以使用$last获取分组用户single data,并且可以显示它。
products.aggregate([
{$lookup:{
from: "users",
localField: "ObjectId(userid)",
foreignField: "ObjectId(_id)",
as: "users"
}},
{ "$group" :
{
_id: { userid: "$userid" },
usrname: { $last: "$users.username" } ,
count: { $sum: 1 }
}
},
], function(err, result) {
if(err){ res.status(400).json({ success: false, message:'Error processing request '+ err }); }
res.status(201).json({
success: true,
data: result
});
}
);
}发布于 2018-03-27 18:01:13
溶液
products.aggregate([
{$lookup:{
from: "users",
localField: "ObjectId(userid)",
foreignField: "ObjectId(_id)",
as: "users"
}},
{ "$group" :
{
_id: { userid: "$userid" },
name: { $last: "$users.username" } ,
count: { $sum: 1 }
}
}, {$sort: {"_id.userid": 1}}
], function(err, result) {
if(err){ res.status(400).json({ success: false, message:'Error processing request '+ err }); }
res.status(201).json({
success: true,
data: result
});
}
);
}https://stackoverflow.com/questions/49514377
复制相似问题