我是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
}
]
}
}
]
如何编写查询以获取具有最高计数的备件的名称?
1 回答
将聚合框架用于此类查询 . 特别是,您需要运行聚合操作,其中管道包含以下阶段(按顺序):
$unwind - 您需要将此作为第一个管道步骤,以便展平
SparePart
数组,以便您可以在管道中进一步处理文档 . 如果没有这个,您将无法获得所需的结果,因为数据将采用数组格式,前一阶段中的累加器运算符将处理单个文档以聚合计数 .$group - 对于按类型字段分组的文档,此步骤将计算您的计数 . 累加器运算符 $sum 将返回每个组的文档总数 .
$sort - 当您从前一个 $group 管道获得结果时,您需要按计数字段对文档进行排序,以便获得计数最多的顶级文档 .
$limit - 这将为您提供最高级的文件 .
现在,将上面的内容组合在一起,你应该运行以下管道来获得所需的结果: