gpt4 book ai didi

mongodb - 从 MongoDB 中的数组中选择不同的值

转载 作者:IT老高 更新时间:2023-10-28 13:14:48 25 4
gpt4 key购买 nike

我有一个集合名称 Alpha_Num,它具有以下结构。我正在尝试找出哪个字母数字对将出现最大次数?

如果我们只使用下面的数据,对 abcd-123 出现两次,所以对 efgh-10001,但第二个对我来说不是有效的情况,因为它出现在同一个文档中。

{
"_id" : 12345,
"Alphabet" : "abcd",
"Numerals" : [
"123",
"456",
"2345"
]
}
{
"_id" : 123456,
"Alphabet" : "efgh",
"Numerals" : [
"10001",
"10001",
"1002"
]
}

{
"_id" : 123456567,
"Alphabet" : "abcd",
"Numerals" : [
"123"
]
}

我尝试使用聚合框架,如下所示

db.Alpha_Num.aggregate([
{"$unwind":"$Numerals"},
{"$group":
{"_id":{"Alpha":"$Alphabet","Num":"$Numerals"},
"count":{$sum:1}}
},
{"$sort":{"count":-1}}
])

这个查询中的问题是它给出了对 efgh-10001 两次。问题:如何在上述条件下从数组“数字”中选择不同的值?

最佳答案

问题解决了。

db.Alpha_Num.aggregate([{
"$unwind": "$Numerals"
}, {
"$group": {
_id: {
"_id": "$_id",
"Alpha": "$Alphabet"
},
Num: {
$addToSet: "$Numerals"
}
}
}, {
"$unwind": "$Num"
}, {
"$group": {
_id: {
"Alplha": "$_id.Alpha",
"Num": "$Num"
},
count: {
"$sum": 1
}
}
}])

使用 $addToSet 进行分组并再次展开就可以了。从 10gen 在线类(class)之一中得到了答案。

关于mongodb - 从 MongoDB 中的数组中选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15915968/

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