gpt4 book ai didi

mongodb - 在MongoDB中获取具有最大内部数组大小的文档

转载 作者:IT老高 更新时间:2023-10-28 12:30:51 25 4
gpt4 key购买 nike

示例 Mongo 文档:

{
"_id": "128374",
"x": [
{
"i": "83847575",
"y": [
{
"i": "9389489283",
"t": "2014-04-11T20:46:57+0000"
},
{
"i": "9389489284",
"t": "2014-04-11T20:47:57+0000"
}
]
},
{
"i": "83847576",
"y": [
{
"i": "2382349385",
"t": "2014-01-15T23:43:29+0000"
},
{
"i": "9389489286",
"t": "2014-04-11T20:47:57+0000"
},
{
"i": "9389489286",
"t": "2014-04-11T20:49:57+0000"
}
]
}
]
}

如何获得每个文档的内部数组“y”的最大计数?我要解决的问题是获取具有最大“y”数的记录。谢谢!

下面给出了“y”的总数。

db.coll.aggregate( 
{ "$unwind" : "$x" } ,
{ "$project" : { "x" : "$x" } } ,
{ "$unwind" : "$x.y" },
{ "$group" : { _id : null, number : { $sum : 1 } } } )

最佳答案

如果您想在集合中找到包含最多“y”元素的文档,那么在聚合框架中执行此操作的方式如下:

db.coll.aggregate( {$unwind:"$x"},
{$project:{ysize:{$size:"$x.y"}}},
{$group:{_id:"$_id",numYs:{$sum:"$ysize"}}},
{$sort: {numYs:-1} },
{$limit: 1 }
)

这使用 $size operator (new in 2.6)投影每个文档中内部 y 数组的大小,然后该组将它们加起来以计算每个文档有多少“y”元素。

添加排序和限制可以让您保留前一个或前 N 个。

这为您提供了整个文档中 y 元素总数的顺序。如果你只想知道哪个文档中的数组 y 最长,那就更简单了,只需取出组并按 ysize 排序即可:

db.coll.aggregate( {$unwind:"$x"},
{$project:{ysize:{$size:"$x.y"}}},
{$sort: {ysize:-1} },
{$limit: 1 }
)

关于mongodb - 在MongoDB中获取具有最大内部数组大小的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303222/

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