.limit()方法和mongodb中的$ limit聚合操作接受的最大值是多少

时间:2017-10-10 13:54:39

标签: mongodb mongodb-query

我需要知道void sort(int n) { for (int p = 1; p < n; p += p) for (int k = p; k > 0; k /= 2) for (int j = 0; j < k; j++) for (int i = k % p; i + k < n; i += k + k) if ((i + j)/(p + p) == (i + j + k)/(p + p)) printf("%2i cmp %2i\n", i + j, i + j + k); } 方法和cursor.limit()聚合管道阶段$limit

所允许的最大值

1 个答案:

答案 0 :(得分:1)

来自cursor.limit()的{​​{1}}:

  

对于小于-2 ^ 31且大于2 ^ 31

的值,limit()的行为未定义

因此,我们可以推断2 ^ 31是最大值。

来自$limit的{​​{1}}:

  

$ limit采用一个正整数,指定要传递的最大文档数。

所以,我认为我们可以推断出2 ^ 31也是最大值。虽然$limit可能是64位整数,但最大值为:2 ^ 63。在这一点上,文档尚不清楚。

根据@AyushGupta的反馈进行更新:

  

所以我刚刚检查过,当写成数字而不是指数时,2 ^ 63对于$ limit来说太高了。 9223372036854775295是$ limit的上限似乎我可以测试

当然,limit()的任何用法也都有效(而不是理论上),即;您要查询的集合中的文档总数。所以,如果你的收藏品有&lt; 2,147,483,647文件然后限制的最大值可能没有实际意义:)