gpt4 book ai didi

MongoDB 聚合 - 不同计数特定元素

转载 作者:行者123 更新时间:2023-12-05 01:02:00 31 4
gpt4 key购买 nike

我的收藏包含以下文件。我想使用聚合来计算里面有多少客户,但我遇到了一些问题。我可以获得总行数,但不能获得总(唯一)客户。

[{
_id: "n001",
channel: "Kalipare",
trans: {
_id: "trans001",
customerID: "customerCXLA93",
customerName: "Kalipare Fried Chicked"
}
}, {
_id: "n002",
channel: "Kalipare",
trans: {
_id: "trans002",
customerID: "customerCXLA93",
customerName: "Kalipare Fried Chicked"
}
}, {
_id: "n003",
channel: "Kalipare",
trans: {
_id: "trans003",
customerID: "customerPWR293",
customerName: "Kalipare Papabun"
}
}, {
_id: "n004",
channel: "Kalipare",
trans: {
_id: "trans004",
customerID: "customerPWR293",
customerName: "Kalipare Papabun"
}
}, {
_id: "n005",
channel: "Tumpakrejo",
trans: {
_id: "trans005",
customerID: "customerPWR293",
customerName: "Tumpakrejo Big Burger"
}
}]

这是我的代码。

db.col.aggregate([
{ $group: {
_id: "$channel",
totalRow: { $sum: 1 }
} }
])

我应该如何计算唯一客户并生成这样的数据。

[{
_id: "Kalipare",
totalRow: 4,
totalCustomer: 2
}, {
_id: "Tumpakrejo",
totalRow: 1,
totalCustomer: 1
}]

最佳答案

要获得唯一客户数量,需要使用 $addToSet 在组管道中创建一组唯一客户 ID。 运算符。获得数组后,使用 $size $project 中的 运算符 管道来获取长度,这将为您提供唯一计数。

运行以下聚合管道将为您提供所需的结果:

db.col.aggregate([
{
"$group": {
"_id": "$channel",
"totalRows": { "$sum": 1 },
"totalCustomer": { "$addToSet": "$trans.customerID" }
}
},
{
"$project": {
"totalRows": 1,
"totalCustomers": { "$size": "$totalCustomer" }
}
}
])

输出:

{
"result" : [
{
"_id" : "Tumpakrejo",
"totalRows" : 1,
"totalCustomers" : 1
},
{
"_id" : "Kalipare",
"totalRows" : 4,
"totalCustomers" : 2
}
],
"ok" : 1
}

关于MongoDB 聚合 - 不同计数特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37844455/

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