gpt4 book ai didi

mongodb - Mongo Group 和两个字段的总和

转载 作者:可可西里 更新时间:2023-11-01 09:10:37 24 4
gpt4 key购买 nike

我有这样的文件:

{
"from":"abc@sss.ddd",
"to" :"ssd@dff.dff",
"email": "Hi hello"
}

我们如何计算“from and to”或“to and from”的总和数?比如两个人之间的沟通很重要?

我能够计算单向总和。我想对两种方式求和。

db.test.aggregate([
{ $group: {
"_id":{ "from": "$from", "to":"$to"},
"count":{$sum:1}
}
},
{
"$sort" :{"count":-1}
}
])

最佳答案

由于您需要计算 2 个地址之间 交换的电子邮件数量,因此可以公平地设计一个统一的 between 字段,如下所示:

db.a.aggregate([
{ $match: {
to: { $exists: true },
from: { $exists: true },
email: { $exists: true }
}},
{ $project: {
between: { $cond: {
if: { $lte: [ { $strcasecmp: [ "$to", "$from" ] }, 0 ] },
then: [ { $toLower: "$to" }, { $toLower: "$from" } ],
else: [ { $toLower: "$from" }, { $toLower: "$to" } ] }
}
}},
{ $group: {
"_id": "$between",
"count": { $sum: 1 }
}},
{ $sort :{ count: -1 } }
])

示例中的统一逻辑应该非常清楚:它是按字母顺序排列的两封电子邮件的数组。如果您信任自己的数据,$match$toLower 部分是可选的。

示例中使用的运算符的文档:

关于mongodb - Mongo Group 和两个字段的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35549200/

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