错误的 BSON 文档:带有节点 MongoDB 驱动程序的非法 CString

Bad BSON Document: illegal CString with Node MongoDB driver

我收到:

[Error: Bad BSON Document: illegal CString]

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

查找它们时可以单独访问它们

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

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

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

当您执行 collection.find(),然后开始用光标在 collection 上迭代时,如果遇到错误,例如使用[Error: Bad BSON Document: illegal CString].

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

单独访问这些文档

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