gpt4 book ai didi

mongodb - Mongoid:使用 group by、distinct 和 count 操作进行查询

转载 作者:行者123 更新时间:2023-12-03 01:01:53 26 4
gpt4 key购买 nike

假设我有一个名为 ItemAvailability 的模型,其中包含 product_idvendor_idshop_id

我想对 product_id 进行 group_by 并选择所有具有 distinct(vendor_id) 且计数 >= 3 的 product_id

使用 MongoID 可以做到这一点吗?

示例数据:

ItemAvailability
product_id vendor_id shop_id
1 1 1
1 1 2
1 1 3
2 2 1
2 2 2
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2

在上述数据集中,结果应为 1,因为它在所有供应商 1、2 和 3 中都可用。

结果中不应包含 as 2,因为它仅由供应商 2 提供。

请告诉我是否需要更多详细信息?

最佳答案

您可以使用aggregation framework在 MongoDB 中执行 group by 查询。看看docs进行介绍。它非常强大,您可以通过查看示例来掌握它的窍门。

对于您所描述的场景,以下查询应该会有所帮助:

db.ItemAvailability.aggregate(
[
// Group By product_id, vendor_id
{
"$group": { _id: { product_id: "$product_id", vendor_id: "$vendor_id" } }
},
// Group results from above step by product_id and get the count
{
"$group": { _id: "$_id.product_id", count: { "$sum": 1 } }
},
// Filter the records for count >= 3
{
"$match": { count: { "$gte": 3 } }
}
]
)

关于mongodb - Mongoid:使用 group by、distinct 和 count 操作进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27535990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com