首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >群中使用猫鼬

群中使用猫鼬
EN

Stack Overflow用户
提问于 2019-10-22 07:47:11
回答 1查看 36关注 0票数 0

我有一系列的对象:

代码语言:javascript
复制
[
{type: 'type1', user: 'user1', order: 'order-10', price: 100},
{type: 'type1', user: 'user1', order: 'order-20', price: 200},
{type: 'type2', user: 'user2', order: 'order-30', price: 300},
{type: 'type2', user: 'user1', order: 'order-40', price: 400}
]

是否可以按类型和内部类型分组,按用户分组,如下所示:

代码语言:javascript
复制
[
  {_id: 'type1', users: [
    {user: 'user1', orders: [{order: 'order-10', price: 100}, {order: 'order-20', price: 200}]}
  ]},
  {_id: 'type2', users: [
    {user: 'user1', orders: [{order: 'order-40', price: 400}]},
    {user: 'user2', orders: [{order: 'order-30', price: 300}]}
  ]}
]

我试图这样做,但没有按用户分组:

代码语言:javascript
复制
db.aggregate([
        { $match: { date: { $gte: new Date(req.body.date.begin), $lt: end } } },
        { $lookup: { from: 'orders', localField: 'order', foreignField: '_id', as: 'order' } },
        { $unwind: "$order" },
        { $lookup: { from: 'clients', localField: 'user', foreignField: '_id', as: 'user' } },
        { $unwind: "$user" },
        {
            $group: {
                _id: {
                    type: '$type',
                    user: '$user.name',
                    order: '$order'
                },
                orders: {
                    $push: { order: '$order', price: '$price' }
                }
            }
        }, {
            $group: {
                _id: '$_id.type',
                users: { $push: { user: '$_id.user', orders: '$orders' } }
            }
        }
    ]
EN

回答 1

Stack Overflow用户

发布于 2019-10-22 08:50:41

代码语言:javascript
复制
db.aggregate([{
"$unwind: "$arrayOfObject" 
},{"$group":{
    "_id":"$type",
    "users":{
            "$addToSet":"$user",

            },
            "orders":{
                "$addToSet":"$orders"
                },
             "price":{
                 "$addToSet":"$price"
             }

    }}])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58499384

复制
相关文章

相似问题

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