如何显示最大编号的客户名称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"
}
]
最佳答案
您可以使用聚合框架。
使用 $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"}}
])
关于mongodb - 如何显示最大编号的客户名称MongoDB 中的订单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53050813/