我收到了:
[Error: Bad BSON Document: illegal CString]
在使用Cursor.each
迭代我的一个集合时使用Node MongoDB驱动程序。它似乎使我的一些文档消失,并且在集合中找不到,即使我在使用Collection.findOne()
查找它们时可以单独访问它们。
这是否意味着我的数据在某种程度上已损坏?
答案 0 :(得分:2)
感谢@wdberkeley在上述评论中提供的所有帮助,这有助于我追踪我的问题。
事实证明,我的收藏中确实有一个损坏的文件,这是在Mongo的不干净关闭期间插入的。我不知道该文档会如何影响我的其余查询。
当您执行collection.find()
,然后开始使用光标在集合上进行迭代时,如果遇到错误(例如[Error: Bad BSON Document: illegal CString]
},则光标将停止并且无法再继续。
cursor.forEach
或cursor.nextObject
都会发生这种情况。因此,即使我能够使用collection.findOne
单独访问这些文档,我也无法访问集合中出现错误后出现的任何文档。
此方案中唯一的解决方案是运行db.repairDatabase
,删除损坏的文档,并为我解决了问题。