错误:(InvalidBSON)对象中字段名称为“clone_class_metrics.CE”的元素中的 BSON 长度不正确,_id 为:ObjectId

错误:(InvalidBSON)对象中字段名称为“clone_class_metrics.CE”的元素中的 BSON 长度不正确,_id 为:ObjectId

我的系统上有 Windows 10,并且有足够的存储空间。

我有一个 208 GB 的数据库,位于一个扩展名为 的文件中.agz

当我将数据库导入 MongoDB 时,出现以下错误:

2021-09-12T20:00:49.930+0430 2021-09-12T20:00:52.622+0430 smartshark_2_1.clone_instance 383GB 2021-09-12T20:00:52.622+0430 
finished restoring smartshark_2_1.clone_instance (989924000 documents, 0 failures) 2021-09-12T20:00:52.622+0430 
Failed: smartshark_2_1.clone_instance: error restoring from archive 'D:\MSRChallenge2022\smartshark_2_1.agz': (InvalidBSON) incorrect BSON length in element with field name 'clone_class_metrics.CE' in object with _id: ObjectId('5cbad340504acf99a43e3724') 2021-09-12T20:00:52.622+0430 
989924000 document(s) restored successfully. 0 document(s) failed to restore.

我从数据库导入 383 GB 的数据后出现此错误。

为了导入数据库,我mongorestore --gzip --archive=D:\my-directory\smartshark_2_1.agz在cmd中写道。

smartshark_2_1.agz 是我的数据库。

我该如何修复这个错误?我从以下链接下载了数据库: https://smartshark.github.io/dbreleases/

答案1

你已经击中 最大 BSON 文档大小 也就是 16 MB,但您已成功导入近十亿个文档。

如果文档损坏,您可以尝试再次下载数据,或者如果数据库看起来正确,您可以忽略错误。在近十亿条记录中,一条记录似乎并不多。

如果你确实需要存储大于 16MB 的文档(或文件),你可以使用 GridFS API 它会自动将数据分成几段并将它们流回给您(从而避免大小限制/ RAM 的问题)。

GridFS 并不将文件存储在单个文档中,而是将文件分成多个部分或块,并将每个块存储为单独的文档。

GridFS 使用两个集合来存储文件。一个集合存储文件块,另一个集合存储文件元数据。

您可以使用此方法将图像、文件、视频等存储在数据库中,基本没有大小限制。

相关内容