首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为用户获取产品的数量- MongoDB,MongoDB,Node.js

为用户获取产品的数量- MongoDB,MongoDB,Node.js
EN

Stack Overflow用户
提问于 2018-03-27 13:35:22
回答 2查看 37关注 0票数 0

如何从users方案中获取用户名及其products产品的数量

产品:

代码语言:javascript
复制
{
 _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
}

用户:

代码语言:javascript
复制
{
 _id: ObjectId(5ab425c6f5bff145304092f7),
 username:"cccc",
 email:"cccc@gmail.com",
 __v:0
},{
 _id:ObjectId(5ab655bbb94733156c438112),
 username:"rrrr",
 email:"rrrr",
 __v:0
}

我希望结果如下:

代码语言:javascript
复制
    [ { _id: { username: 'rrrr' } , count: 1},
      { _id: { username: 'cccc' } , count: 2} ]

现在,我从这个开始:

代码语言:javascript
复制
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
      });  
    }
  );

脚本返回以下值:

代码语言:javascript
复制
[ { _id: { userid: '5ab655bbb94733156c438112' }, count: 1 },
  { _id: { userid: '5ab425c6f5bff145304092f7' }, count: 2 } ]

字段用户I同意,但我希望您在这里具有用户名属性。如何修改剧本?

EN

回答 2

Stack Overflow用户

发布于 2018-03-27 13:51:25

您可以使用$last获取分组用户single data,并且可以显示它。

代码语言:javascript
复制
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
      });  
    }
  );
}

你可以在这里找到文档

票数 0
EN

Stack Overflow用户

发布于 2018-03-27 18:01:13

溶液

代码语言:javascript
复制
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
      });  
    }
  );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49514377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档