node.js - 错误的 BSON 文档 : illegal CString with Node MongoDB driver

标签 node.js mongodb node-mongodb-native

我收到:

[错误:错误的 BSON 文档:非法的 CString]

当使用 Node MongoDB 驱动程序并使用 Cursor.each 迭代我的一个集合时。它似乎使我的一些文档消失了,并且在集合中找不到,即使当我使用 Collection.findOne() 查找它们时可以单独访问它们。

这是否意味着我的数据以某种方式损坏?

最佳答案

感谢@wdberkeley 在上述评论中提供的所有帮助,帮助我找到了我的问题。

事实证明,我的收藏中确实有一个损坏的文档,它是在 Mongo 不正常关闭期间插入的。不过,我并不知道该文档会如何影响我的其余查询。

当您执行 collection.find() 时,然后开始使用光标在集合上迭代,如果遇到错误,光标将停止并且无法继续前进,例如使用 [错误:错误的 BSON 文档:非法 CString]

cursor.forEachcursor.nextObject 都会发生这种情况。因此,即使我能够使用 collection.findOne 单独访问这些文档,我也无法访问集合中出现错误后出现的任何文档。

在这种情况下,对我来说唯一的解决方案是运行 db.repairDatabase,它删除了损坏的文档,并为我解决了问题。

关于node.js - 错误的 BSON 文档 : illegal CString with Node MongoDB driver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27871591/

相关文章:

node.js - fatal error : Schema hasn't been registered for model "a". 使用 mongoose.model(name, schema)

javascript - 如何将 mongo 查找查询的结果添加到另一个查找查询中

node.js - 如何从 NodeJS 管道到 NodeJS?

javascript - 安装和使用 Node JS

mongodb - 我可以重命名 GORM 的 "version"字段吗? (Grails 2.2 + GORM MongoDB)

node.js - 带游标的 Mongodb native 聚合

mongodb - ModuleNotFoundError : Module not found: Error: Can't resolve 'dns' in 'node_modules/mongodb/lib'

node.js - 使用 Sails.io.js 时如何从浏览器发出消息

javascript - 将 catch block 添加到 Promise 会返回待处理而不是被拒绝

mongodb - 如何从时间戳转换为 Mongo ObjectID