Mongodb总行数限制

时间:2014-03-25 21:21:21

标签: ajax mongodb rest

我对mongoDB的Restfull接口有一些问题。

我已提交此查询 - > http://127.0.0.1:28017/db/collection/?limit=0(我使用limit = 0因为我想通过ajax请求找到我的所有结果), 行数方面的结果是“total_rows”:38185。

但是如果我在shell中执行db.collection.count(),结果是496519。

为什么我有这些差异?是否可以通过ajax请求获得相同的结果?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我确信结果不受行数或MongoDB的影响,但表示是Webserver(在创建任务管理员时)。它可能是Web服务器响应中断的有效负载大小,如HTTP错误413(实体到更大)。

在我的测试中,我看到日志中的条目为" [websvr] killcursors:找到1&1;#34;。这将终止客户端(在Web服务器中)和MongoDB之间打开的游标。大多数驱动程序不需要调用OP_KILL_CURSORS,因为MongoDB默认定义了10分钟的超时。

返回测试我得出结论,Web服务器(内置MongoDB)响应的大小有效载荷限制在38~40MB。让我展示一下我的分析。

我创建了一个包含1,260,000个文档的集合。在REST Web界面中,查询结果为total_rows:379,677(或avgObjSize * total_rows = 38MB)。

db.manyrows.stats()
{
     "ns" : "forum.manyrows",
     "count" : 1260000,
     "size" : 125101640,
     "avgObjSize" : 99.28701587301587,
     "storageSize" : 174735360,
     "numExtents" : 12,
     "nindexes" : 1,
     "lastExtentSize" : 50798592,
     "paddingFactor" : 1,
     "systemFlags" : 1,
     "userFlags" : 0,
     "totalIndexSize" : 48753488,
     "indexSizes" : {
          "_id_" : 48753488
     },
     "ok" : 1
}

====== 网页输出

{"total_rows" : 379677 ,  "query" : {} ,  "millis" : 6793}

继续...删除/删除一些收集文件以适合38MB。在所有文档中执行新查询结果,结果为379642或37MB的379642。

> db.manyrows.stats()
{
     "ns" : "forum.manyrows",
     "count" : 379678,
     "size" : 38172128,
     "avgObjSize" : 100.53816128403543,
     "storageSize" : 174735360,
     "numExtents" : 12,
     "nindexes" : 1,
     "lastExtentSize" : 50798592,
     "paddingFactor" : 1,
     "systemFlags" : 1,
     "userFlags" : 0,
     "totalIndexSize" : 12329408,
     "indexSizes" : {
          "_id_" : 12329408
     },
     "ok" : 1
}

=== 网页输出

{"total_rows" : 379678 ,  "query" : {} ,  "millis" : 27325}

其他收藏品的新样本:结果39MB(“avgObjSize&#34 ;:3440.35 *" total_rows":11395 = 39MB)

> db.messages.stats()
{
     "ns" : "enron.messages",
     "count" : 120477,
     "size" : 414484160,
     "avgObjSize" : 3440.3592386928626,
     "storageSize" : 518516736,
     "numExtents" : 14,
     "nindexes" : 2,
     "lastExtentSize" : 140619776,
     "paddingFactor" : 1,
     "systemFlags" : 1,
     "userFlags" : 1,
     "totalIndexSize" : 436434880,
     "indexSizes" : {
          "_id_" : 3924480,
          "body_text" : 432510400
     },
     "ok" : 1
}

===网络输出:

{       "&TOTAL_ROWS#34; :11395,       "查询" :{},       "米利斯" :2956    }

您可以尝试使用像Bottle这样的微框架进行查询。