gpt4 book ai didi

Mongodb 最优查询

转载 作者:行者123 更新时间:2023-12-04 10:53:10 25 4
gpt4 key购买 nike

我的用例是不同的。我试图将它映射到用户和订单以便于理解。

我必须为用户获取以下信息

    For each department
For each order type
delivered count
unique orders

唯一订单计数意味着用户可能订购了相同的产品,但对于相同的产品,该计数必须为 1。我有后台逻辑并通过重复的订单 ID 进行识别。
db.getCollection('user_orders').aggregate([{"user_id":123},
{$group: {"_id": {"department":"$department", "order_type":"$order_type"},
"del_count":{$sum:"$del_count"},
"unique_order":{$addToSet:{"unique_order":"$unique_order"}}}},

{$project: {"_id":0,
"department":"$_id.department",
"order_type_name":"$_id.order_type",
"unique_order_count": {$size:"$unique_order"},
"del_count":"$del_count"
}},

{$group: {"_id":"$department",
order_types: {$addToSet:
{"order_type_name":"$order_type_name",
"unique_order_count": "$unique_order_count",
"del_count":"$del_count"
}}}}
])

抱歉我的查询格式。

这个查询工作得很好。我添加了第二个分组,以便将同一部门的所有订单类型的响应汇总在一起。

我可以用更少的管道来做同样的事情——有效的方式吗?

最佳答案

$project stage 似乎是多余的,但它更多的是重构而不是性能改进。您的简化管道如下所示:

db.getCollection('user_orders').aggregate([{$group: {"_id": {"department":"$department", "order_type":"$order_type"}, 
"del_count":{$sum:"$del_count"},
"unique_order":{$addToSet:{"unique_order":"$unique_order"}}}},

{$group: {"_id":"$_id.department",
order_types: {$addToSet:
{"order_type_name":"$_id.order_type",
"unique_order_count": {$size:"$unique_order"},
"del_count":"$del_count"
}}}}
])

关于Mongodb 最优查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59368987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com