【mongodb】求两个集合关联统计的方法

有两个集合,一个是商品,一个是商品分类

商品集合goods

[
    {
        _id: "5c74f197e4a2b621d8aff0fa",
        name: "手机",
        class: [
            "5c74efb2e4a2b621d8aff0e6", "5c74ef48e4a2b621d8aff0de"
        ]
    }
]

商品分类集合classes:

[
    {
        _id: "5c74efb2e4a2b621d8aff0e6",
        name: "数码产品"
    },
    {
        _id: "5c74ef48e4a2b621d8aff0de",
        name: "手机"
    }

]

我想查询商品分类集合classes的列表,并且返回该分类下有多少个商品,关联条件是classes的_id在goods的class数组中,期待效果是这样:

[
    {
        _id: "5c74efb2e4a2b621d8aff0e6",
        name: "数码产品",
        conut: 5
    },
    {
        _id: "5c74ef48e4a2b621d8aff0de",
        name: "手机",
        conut: 7
    }

]

这个如何实现,用aggegate,求大神!

阅读 2.8k
2 个回答

大神们,求解答呀

商品表中只是缓存了商品分类的ID
所以没办法直接得出你想要的结果
我能想到的就是先聚合得出结果,然后再查询商品分类表,循环设置分类名称。

db.goods.aggregate(
    [
        { $unwind: '$class' },
        { $group: {
            _id: '$class',
            count: { $sum: 1 }
        } }
    ]
);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进