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

Posted

技术标签:

【中文标题】MongoDB 的 $in 子句是不是有参数数量的最大限制【英文标题】:Does MongoDB's $in clause has any max limit in number of argumentsMongoDB 的 $in 子句是否有参数数量的最大限制 【发布时间】:2016-06-06 16:15:53 【问题描述】:

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

例如

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

在 ids 数组中,我可以传递多少个 id?

目前在 50,000 之前我没有遇到 ids 长度的任何问题......但为了安全起见,我想知道最大限制。

我尝试在 Mongo doc 上进行搜索,但没有找到任何内容。

提前致谢。

【问题讨论】:

【参考方案1】:

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

【讨论】:

如果 ids 长度为数百万,我们会遇到什么问题......因为你的评论现在已经 5 年了......在 mongodb 中是固定的吗? 还是这样。情况:docs.mongodb.com/manual/reference/limits

以上是关于MongoDB 的 $in 子句是不是有参数数量的最大限制的主要内容,如果未能解决你的问题,请参考以下文章

CQL3 SELECT...IN 子句中的元组数量是不是有任何限制?

MongoDB in 数量限制

带有 IN 子句参数的 Oracle 存储过程

Informix:IN 子句中的项目数量限制?

使用 WHERE 和 IN 子句的 MongoDB 查询

JPQL IN 子句:Java 数组(或列表、集合...)?