坏BSON文档:带有Node MongoDB驱动程序的非法CString

时间:2015-01-10 00:41:58

标签: node.js mongodb node-mongodb-native

我收到了:

[Error: Bad BSON Document: illegal CString]

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

这是否意味着我的数据在某种程度上已损坏?

1 个答案:

答案 0 :(得分:2)

感谢@wdberkeley在上述评论中提供的所有帮助,这有助于我追踪我的问题。

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

当您执行collection.find(),然后开始使用光标在集合上进行迭代时,如果遇到错误(例如[Error: Bad BSON Document: illegal CString]},则光标将停止并且无法再继续。

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

此方案中唯一的解决方案是运行db.repairDatabase,删除损坏的文档,并为我解决了问题。