documentation for mongoexport
发出了这个可怕的警告,
避免对完整实例生产备份使用mongoimport和mongoexport。它们无法可靠地保留所有丰富的BSON数据类型,因为JSON只能表示BSON支持的类型的子集。如MongoDB备份方法中所述,使用mongodump和mongorestore来实现这种功能。
页面然后继续说,
为保留类型信息,mongoexport和mongoimport对某些类型使用strict mode representation。
尽管“严格模式表示”,mongoexport仍不能正确表示的types是什么?
询问是因为mongorestore
有一个非常烦人的限制:doesn't support an upsert
option,这使得它无法用于仅更新少数文档的同步集合。您需要--drop
整个集合,然后才能完全从头还原它,这对于大型集合可能非常耗时,尤其是在需要重新创建文本索引的情况下。
答案 0 :(得分:0)
原来,针对mongoimport / export的警告已过时。使用mongodump / restore来提高速度仍然是一个好主意,但是 mongoexport使用MongoDB Extended JSON格式保留类型信息。例如,“日期”字段不再静默转换为文本,而是转换为:
{ "$date": "<date>" }
其中<date>
是日期的ISO-8601 YYYY-MM-DDTHH:mm:ss.mmm<+/-Offset>
表示形式。正则表达式将转换为
{ "$regex": "<sRegex>", "$options": "<sOptions>" }
等mongoimport会解析文档字段的这些文本表示形式,以还原原始类型。有关更多信息,请参见BSON Data Types and Associated Representations。