当使用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上搜索,但没有找到任何东西。
先谢谢你了。
2条答案
按热度按时间vnzz0bqm1#
$in
子句本身对参数的数量没有限制,但是,总查询大小限制为16MB,因为查询只是一个BSON文档。根据ids
使用的类型(请参阅BSON specification),当您的id长度达到数百万时,您可能会开始遇到问题。rta7y2nd2#
建议在$in子句中只包含10个值。
建议您将传递给$in运算符的参数数量限制为数十个值。使用数百个或更多参数可能会对查询性能产生负面影响。
参考:https://www.mongodb.com/docs/v4.2/reference/operator/query/in/