MongoDB的$in子句是否有参数数量的最大限制

nwsw7zdq  于 2023-04-29  发布在  Go
关注(0)|答案(2)|浏览(509)

当使用MongoDB的$in子句与Aggregate时,是否有参数数量的最大限制?
例如

Model.aggregate(
        [
            { $match : 
                { '_Id' : 
                            {
                                $in : ids
                            }
                }
            } ,
            { $group : 
                {   _id : '$roomId' ,
                    maxdate: { $max: "$date"},
                }
            },
            {$sort: { maxdate: -1} },
            {$skip: skip},
            {$limit: limitNum }
        ]

在id数组中,我可以传递多少个id?
目前我没有遇到任何问题与ids长度直到50,000。但为了安全起见,我想知道最高限额。
我试着在Mongo Doc上搜索,但没有找到任何东西。
先谢谢你了。

vnzz0bqm

vnzz0bqm1#

$in子句本身对参数的数量没有限制,但是,总查询大小限制为16MB,因为查询只是一个BSON文档。根据ids使用的类型(请参阅BSON specification),当您的id长度达到数百万时,您可能会开始遇到问题。

rta7y2nd

rta7y2nd2#

建议在$in子句中只包含10个值。
建议您将传递给$in运算符的参数数量限制为数十个值。使用数百个或更多参数可能会对查询性能产生负面影响。
参考:https://www.mongodb.com/docs/v4.2/reference/operator/query/in/

相关问题