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