如何显示最大编号的客户名称MongoDB中的订单数量?订单是一个嵌套的子文档。
{
"_id" : ObjectId("5bd729c463b37537e42174a3"),
"name" : "Vedang",
"no" : "123",
"city" : "Pune",
"orders" : [
{
"order" : "1",
"type" : "clothes",
"total" : "1000"
},
{
"order" : "2",
"type" : "clothes",
"total" : "2000"
},
{
"order" : "3",
"type" : "shoes",
"total" : "3000"
}
]
}
答案 0 :(得分:0)
您可以使用聚合框架。
使用$size
来获取订单数组的长度,后跟$sort
desc和$facet
来输出最大订单大小以及所有带有计数和名称的文档。
$project
与$filter
一起输出计数与最大订单数匹配的所有文档。
$unwind
与$project
一起输出最高订单的名称。
类似
db.colname.aggregate([
{"$addFields":{"ordersize":{"$size":"$orders"}}},
{"$sort":{"ordersize":-1}},
{"$facet":{"maxordersize":[{"$limit":1},{"$project":{"ordersize":1}}], "docs":[{"$project":{"ordersize":1, "name":"$name"}}]}},
{"$project":{"docs":{"$filter":{"input":"$docs","cond":{"$eq":["$$this.ordersize",{"$arrayElemAt":["$maxordersize.ordersize", 0]]}}}}}},
{"$unwind":"$docs"},
{"$project":{"name":"$docs.name"}}
])