gpt4 book ai didi

mongodb - 查找包含特定值的最大出现次数的数组的文档

转载 作者:可可西里 更新时间:2023-11-01 10:03:05 25 4
gpt4 key购买 nike

我有这样的文档

{ "_id" : ObjectId("5755d81e2935fe65f5d167aa"), "prices" : [ 23, 11, 2, 3, 4, 1, 232 ] },
{ "_id" : ObjectId("5755d81e2935fe65f5d167ab"), "prices" : [ 99, 3, 23, 23, 12 ] },
{ "_id" : ObjectId("5755d81e2935fe65f5d167ac"), "prices" : [ 999, 12, 3, 4, 4, 4, 4, 4, 123 ] },
{ "_id" : ObjectId("5755d81e2935fe65f5d167ad"), "prices" : [ 24, 3, 4, 5, 6, 7, 723 ] }

我想找到数组“价格”包含最多数字 4 的文档,在我的例子中是第三个文档。有什么方法可以查询吗?

最佳答案

从 MongoDB 3.2 开始,我们可以 $project我们的文件并使用 $size$filter运算符返回每个数组中数字 4 的“计数”。从那里我们需要$group使用该“值”并使用 $push累加器运算符返回具有相同“最大值”的文档数组。下一个你$sort您的文件由 _id 并使用 $limit返回出现次数最多的 4 的文档。

db.collection.aggregate(
[
{ "$project": {
"prices": 1,
"counter": {
"$size": {
"$filter": {
"input": "$prices",
"as": "p",
"cond": { "$eq": [ "$$p", 4 ] }
}
}
}
}},
{ "$group": {
"_id": "$counter",
"docs": { "$push": "$$ROOT" }
}},
{ "$sort": { "_id": -1 } },
{ "$limit": 1 }
]
)

关于mongodb - 查找包含特定值的最大出现次数的数组的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37666095/

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