gpt4 book ai didi

mongodb - 获取mongodb中计数最大的字段名称

转载 作者:可可西里 更新时间:2023-11-01 09:39:24 25 4
gpt4 key购买 nike

我是mongodb新手,想获取最大计数的字段名称(备件类型)!下面给出了我的集合中的示例文档(原始集合有 50 个文档)

[
{
"Vehicle": {
"licensePlateNo": "111A",
"vehicletype": "Car",
"model": "Nissan Sunny",
"VehicleCategory": [
{
"name": "Passenger"
}
],
"SparePart": [
{
"sparePartID": 4,
"Type": "Wheel",
"Price": 10000,
"Supplier": [
{
"supplierNo": 10,
"name": "Saman",
"contactNo": 112412634
}
]
}
],
"Employee": [
{
"employeeNo": 3,
"job": "Painter",
"jobCategory": "",
"salary": 100000
}
]
}
}
]

如何编写查询以获取计数最高的备件名称?

最佳答案

为此类查询使用聚合框架。特别是您需要运行聚合操作,其中管道由以下阶段(按顺序)组成:

$unwind - 您需要将此作为第一个管道步骤,以便展平 SparePart 数组,以便您可以在管道中进一步处理非规范化的文档。没有这个你不会得到所需的结果,因为数据将采用数组格式,并且前一阶段中的累加器运算符对单个文档进行聚合计数。

$group - 此步骤将为您计算按类型字段分组的文档的计数。累加器运算符 $sum 将返回每个组的文档总数。

$sort - 当您从之前的 $group 中获得结果时 管道,您需要按计数字段对文档进行排序,以便获得计数最多的顶级文档。

$limit - 这将为您提供顶级文档。

现在,将以上内容组合在一起,您应该运行以下管道以获得所需的结果:

db.AutoSmart.aggregate([
{ "$unwind": "$Vehicle.SparePart" },
{
"$group": {
"_id": "$Vehicle.SparePart.Type",
"count": { "$sum": 1 }
}
},
{ "$sort": { "count": -1 } },
{ "$limit": 1 }
])

关于mongodb - 获取mongodb中计数最大的字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40974900/

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