2

在尝试获得完整的结果集(约 40 个结果)时,我实际上面临一个问题。每个对象都包含大约 260 个子引用和其他对象。

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

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

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

编辑:我的收藏大小是 8Mb(来自 MongoVue 信息)

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

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

我的数据库的屏幕截图: 在此处输入图像描述

编辑 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)
4

2 回答 2

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); 
)

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

于 2014-12-17T13:09:49.330 回答
1

该错误是由mongo 节点驱动程序“低于”mongoskin 发出的。在连接文件中,有几个地方会发出此错误。要查看实际错误,请给连接一个记录器,它会打印该东西。这将告诉您在连接中哪里有问题,以及问题是什么。请注意,mongoskin 使用的是 1.4.4 版本的驱动程序,所以如果这是一个错误,他们可能已经修复了它。

于 2014-12-17T13:40:35.960 回答