由大结果集引起的MongoDb错误

时间:2014-12-12 08:34:29

标签: node.js mongodb mongoskin

我在尝试获取完整的结果集时遇到了问题(~40结果)。 每个对象都有〜260个子对象引用和其他对象。

实际上,当我尝试显示30个对象时,它可以正常工作。但是,当我尝试使用40时它没有。 每个对象都是正确的,没有数据无效。

似乎我超过了mongoDb授权的最大大小(4或16 mb)或默认Mongoskin(我用来访问mongodb的库),mongodb关闭了与我的应用程序的池连接。

那么如何才能增加最大文档大小或最大结果集大小来显示我需要的所有内容呢?

编辑:我的收藏尺寸为8Mb(来自MongoVue信息)

编辑2: 我用来获取数据的代码:

db.collection("roadmap").find({}).toArray()

我的数据库的屏幕截图: enter image description here

编辑3 :我改变了使用

利用数据的方式
@em.collection('roadmap').find({}, (err, resultCursor)=>
      nextItem = (err, item)=>
        if !item)
          return

        console.log item
        resultCursor.nextObject(nextItem)
      resultCursor.nextObject(nextItem)
    )

它既不工作,请求被执行,然后,我失去了我的mongodb连接。如果我在我的应用程序中评论这段代码,一切都很好。

编辑4 :完整堆栈跟踪,它更像是库问题而不是数据库问题

Error: parseError occured
  at [object Object].<anonymous> (/var/www/xxxxxx/Ws/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:192:34)
  at [object Object].emit (events.js:98:17)
  at Socket.<anonymous> (/var/www/xxxxxx/Ws/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/connection/connection.js:393:20)
  at Socket.emit (events.js:95:17)
  at Socket.<anonymous> (_stream_readable.js:764:14)
  at Socket.emit (events.js:92:17)
  at emitReadable_ (_stream_readable.js:426:10)
  at emitReadable (_stream_readable.js:422:5)
  at readableAddChunk (_stream_readable.js:165:9)
  at Socket.Readable.push (_stream_readable.js:127:10)

2 个答案:

答案 0 :(得分:1)

我建议你为集合'路线图'创建和索引。

 db.roadmap.ensureIndex({zone:1});

这仅用于比以前更快地检索数据,请参阅http://docs.mongodb.org/manual/core/indexes-introduction/

按如下所示更改Find,因为数据已经是数组,所以不需要toArray函数。

 db.roadmap.find({},function(err,data){
 if(err){
 console.log(err);
}
console.log(data); 
)

这将查找路线图集合中的所有数据。当数据集很大时,将使用索引。希望这会有所帮助。

答案 1 :(得分:1)

mongo node driver&#34;以下&#34;正在发出错误。 mongoskin。在connection文件中,有几个地方可以发出此错误。要查看实际错误,请为连接提供一个记录器,它将打印该事物。这将告诉你在连接中哪里有问题,以及它是什么。请注意,mongoskin正在使用驱动程序的1.4.4版本,所以如果它是一个bug,他们可能已经修复了它。