mongodb - 如何显示最大编号的客户名称MongoDB 中的订单?

标签 mongodb aggregation-framework

如何显示最大编号的客户名称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/

相关文章:

javascript - 嵌套对象中的 Meteor Mongodb 计数字段

mongodb - 获取列表中带有标签的文档,按匹配总数排序

Mongodb聚合查找只返回数组的一个字段

mongodb - 如何聚合以获得每个电影分组键两个用户的每个组合?

node.js - 如何将新元素推送到子文档中“发布”>“评论”>“回复”>“喜欢”作为数组

node.js - "query"计算每个类别的帖子 expressjs mongoose

python - 更新 mongoengine 中的嵌入式文档

node.js - 如何在环回查询 Mongo 中获取聚合结果

MongoDB 聚合 : How to put results from lookup into a nested array?

javascript - 使用 Node 和 mongodb 在单个数组中创建多个文档的过程是什么