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

发布于 2022-09-11 20:16:24 字数 815 浏览 13 评论 0

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

商品集合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,求大神!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月野兔 2022-09-18 20:16:24

大神们,求解答呀

江城子 2022-09-18 20:16:24

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

db.goods.aggregate(
    [
        { $unwind: '$class' },
        { $group: {
            _id: '$class',
            count: { $sum: 1 }
        } }
    ]
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文