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

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

笔记:

>这不是封顶的收藏.
>在本地,我正在运行3.2.5,远程MongoDB版本是2.4.12
>我没有使用limit参数.使用它时,我可以同时限制本地服务器和部署服务器,但是部署服务器仍将永远不会返回超过256条记录.
>从服务器获取的数据量为<500K.没什么大不了的.
>代码使用Cloner在Clojure中使用,Monger本身仅调用Java com.mongodb.

>我不确定使用Robomongo可以从远程服务器中提取256条以上的记录,因为我不确定它是如何做到的,因为我无法从命令行连接到远程服务器(使用相同的凭据进行身份验证失败,所以我猜是版本不兼容).

任何帮助表示赞赏.

更新:发现引发问题的原因:对输出进行排序时,它将输出减少到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

转载注明原文:java-MongoDB:查询具有隐式限制(256)? - 代码日志