我收到:
[错误:错误的 BSON 文档:非法的 CString]
当使用 Node MongoDB 驱动程序并使用 Cursor.each
迭代我的一个集合时。它似乎使我的一些文档消失了,并且在集合中找不到,即使当我使用 Collection.findOne()
查找它们时可以单独访问它们。
这是否意味着我的数据以某种方式损坏?
最佳答案
感谢@wdberkeley 在上述评论中提供的所有帮助,帮助我找到了我的问题。
事实证明,我的收藏中确实有一个损坏的文档,它是在 Mongo 不正常关闭期间插入的。不过,我并不知道该文档会如何影响我的其余查询。
当您执行 collection.find()
时,然后开始使用光标在集合上迭代,如果遇到错误,光标将停止并且无法继续前进,例如使用 [错误:错误的 BSON 文档:非法 CString]
。
cursor.forEach
或 cursor.nextObject
都会发生这种情况。因此,即使我能够使用 collection.findOne
单独访问这些文档,我也无法访问集合中出现错误后出现的任何文档。
在这种情况下,对我来说唯一的解决方案是运行 db.repairDatabase
,它删除了损坏的文档,并为我解决了问题。
关于node.js - 错误的 BSON 文档 : illegal CString with Node MongoDB driver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27871591/