mongodb - mongoimport/mongoexport 不保留哪些 MongoDB 类型?
问题描述
的文档mongoexport
有这个可怕的警告,
避免使用 mongoimport 和 mongoexport 进行完整实例生产备份。它们不能可靠地保留所有丰富的BSON数据类型,因为JSON只能表示 BSON 支持的类型的子集。使用 MongoDB 备份方法中所述的 mongodump 和 mongorestore 来实现此类功能。
然后页面继续说,
为了保留类型信息,mongoexport 和 mongoimport 对某些类型使用严格模式表示。
尽管有“严格模式表示”,但 mongoexport 仍然不能正确表示的类型到底是什么?
询问 becausemongorestore
有一个非常烦人的限制:它不支持upsert
option,这使得它无法用于同步只有少数文档更新的集合。您必须--drop
先恢复整个集合,然后才能从头开始完全恢复它,这对于大型集合来说可能非常耗时,尤其是在需要重新创建文本索引的情况下。
解决方案
事实证明,针对 mongoimport/export 的警告已过时。使用 mongodump/restore 来提高速度仍然是一个好主意,但是mongoexport 使用MongoDB Extended JSON format保留类型信息。例如,日期字段不再静默转换为文本,而是:
{ "$date": "<date>" }
<date>
日期的 ISO-8601YYYY-MM-DDTHH:mm:ss.mmm<+/-Offset>
表示在哪里。正则表达式转换为
{ "$regex": "<sRegex>", "$options": "<sOptions>" }
等。这些文档字段的文本表示由 mongoimport 解析,恢复原始类型。有关详细信息,请参阅BSON 数据类型和相关表示。
推荐阅读
- angular - 离子 5 冲突 package.json
- spring - Spring WebFlux 端点性能记录器
- rust - Rust 如何结合它的多重生命周期?
- android-studio - Android Studio 搜索所有项目中的出现(包括关闭的项目)
- python - 打开未找到文件的错误。但是不应该覆盖找不到文件吗?
- function - 使用函数指针的泛型函数
- cadence-workflow - 时间:在活动实现中使用时间相关的功能
- javascript - 如何在不使用服务工作者的情况下使用流 api 下载和保存文件
- fitnesse - 找不到夹具:dbfit.OracleTest...我收到此错误,无法进一步移动,
- node.js - 节点js的后角形式参数错误