MongoDB:查询有隐式限制(256)?

我在MongoDB中创建了(在代码中)一个默认集合并且正在查询它,并且发现当我在本地运行它时代码将返回所有数据,但是当我在部署服务器上查询它时它不会。 它最多返回256条记录。

笔记:

  • 这不是上限集合。
  • 在本地,我运行3.2.5,远程MongoDB版本是2.4.12
  • 我没有使用limit参数。 当我使用它时,我可以限制本地服务器和部署服务器,但部署服务器仍将永远不会返回超过256条记录。
  • 从服务器获取的数据量<500K。 没什么大不了的。
  • 代码在Clojure中,使用Monger,它本身只调用Java com.mongodb。
    • 我可以使用Robomongo从远程服务器获取超过256条记录,虽然我不知道它是如何做到的,因为我无法从命令行连接到远程(auth使用相同的凭据失败,所以我猜版本那里不相容)。

任何帮助表示赞赏。

更新:找到触发问题的东西:当我对输出进行排序时,它会将输出减少到256 – 但只有当我从Mongo 2.4中拉出时! 我不知道这是MongoDB本身,MongoDB java类还是Monger,但这里是解释问题的代码,就像我可以做到的那样简单:

(ns mdbtest.core (:require [monger.core :as mg] [monger.query :as mq])) (defn get-list [] (let [coll (mq/with-collection (mg/get-db (mg/connect {:host "old-mongo"}) "mydb") "saves" (mq/sort (array-map :createdDate -1)))] ;;<<==remove sort coll)) 

您需要指定更大的批量大小,默认为256条记录。

这是我自己的代码中的一个例子:

 => (count (with-db (q/find {:keywords "lisa"}) (q/sort {:datetime 1}) )) 256 => (count (with-db (q/find {:keywords "lisa"}) (q/sort {:datetime 1}) (q/batch-size 1000) )) 688 

在此处查看更多信息: http : //clojuremongodb.info/articles/querying.html#setting_batch_size