获取mongodb中具有最大计数的字段的名称
我是mongodb的新手,希望获得具有最大计数的字段(备件类型)的名称!我的收藏中的一个样本文档(原始收藏有50个文档)如下所示获取mongodb中具有最大计数的字段的名称,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我是mongodb的新手,希望获得具有最大计数的字段(备件类型)的名称!我的收藏中的一个样本文档(原始收藏有50个文档)如下所示 [ { "Vehicle": { "licensePlateNo": "111A", "vehicletype": "Car", "model": "Nissan Sunny", "VehicleCategory": [ { "name": "Passenger"
[
{
"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
}
]
}
}
]
如何编写查询以获取计数最高的备件名称?使用聚合框架进行此类查询。特别是,您需要运行聚合操作,其中管道由以下阶段(按顺序)组成: -您需要将此作为第一个管道步骤,以便展平
SparePart
数组,以便您可以在管道中进一步处理非规范化的文档。没有这个,你就得不到
由于数据将采用数组格式,且前一阶段中的累加器运算符将处理单个文档以聚合计数,因此得到所需的结果
-此步骤将为您计算按类型字段分组的文档的计数。累加器操作符将返回每组的文档总数
-当您从上一个管道中获得结果时,您需要按计数字段对文档进行排序,以便获得计数最多的顶部文档
-这将为您提供顶级文档
现在,将上述内容组合在一起,您应该运行以下管道以获得所需的结果:
db.AutoSmart.aggregate([
{ "$unwind": "$Vehicle.SparePart" },
{
"$group": {
"_id": "$Vehicle.SparePart.Type",
"count": { "$sum": 1 }
}
},
{ "$sort": { "count": -1 } },
{ "$limit": 1 }
])
假设我们想从数据库中获取用户的最大年龄
db.collection.find().sort({age:-1}).limit(1) // for MAX
进一步您可以检查。计数在哪里?没有计数我想执行一个查询,如从车辆中选择sparepart类型,其中max(计数)仍然不知道您在问什么。db.AutoSmart.count({“vehicle\uu sparepart\uuuuuuuu type”:“Wheel”})当我运行此命令时,我会得到车轮的出现次数!我想检索出现次数最多的备件类型如果我想获取最小的备件类型,我如何更改它?要获取最小的备件类型,只需将
$sort
管道更改为{“$sort”:{“count”:1}
。