从文档中,它说要避免 BSON 数据类型上的 mongoexport
警告避免将 mongoimport 和 mongoexport 用于完整实例生产备份。它们不能可靠地保留所有丰富的 BSON 数据类型,因为 JSON 只能表示 BSON 支持的类型的一个子集。使用 mongodump 和 mongorestore 如 MongoDB 备份方法中所述来实现此类功能。
创建了一个名为“testCollection”的集合
> db.testCollection.insert({title: 'MongoDB Overview',
... description: 'MongoDB is magical database',
... by: 'by newbie',
... url: 'http://www.mongodb_cannot_understand_mongoexport.com',
... tags: ['mongodb', 'database', 'NoSQL'],
... likes: 100});
> db.testCollection.find().pretty();
{
"_id" : ObjectId("59524e6412d3ef3c879c267a"),
"title" : "MongoDB Overview",
"description" : "MongoDB is magical database",
"by" : "by newbie",
"url" : "http://www.mongodb_cannot_understand_mongoexport.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
执行以下命令将类型作为对象和字符串,
typeof db.testCollection.findOne()._id; 输出:对象
typeof db.testCollection.findOne().title; 输出:字符串
如果在上述集合上运行 mongoexport 可能会或可能不会保证数据的保存,因为它包含数据类型字符串和对象。(我怀疑任何文件都不会有字符串、objectID 数据类型)
在这种情况下,根本不应该从这里的 bson 类型链接描述列表中使用 mongoexport
我的问题是
在什么情况下 mongoexport 可以与示例集合一起使用?
注意:我想使用 mongoexport,mongodump 不是一个选项
文档中的那一段意味着,使用 mongoexport/mongoimport,不能保证恢复的数据库中的数据与原始源中的数据完全匹配。这是因为 JSON 本身并不支持许多 BSON 数据类型,例如 Date、MinKey、ObjectId 等。因此 mongoexport 必须做一些变通方法来至少导出这些类型的某些内容。这是它导出 ObjectId 字段的方式,例如:
"_id": {"$oid": "531701fdb9e3b40002000002"}
要可靠地备份/恢复您的数据,请使用 mongodump/mongorestore。
在什么情况下 mongoexport 可以与示例集合一起使用?
当您想获得一些人类可读的数据快照时。JSON 在大多数语言中也得到很好的支持,因此您可以使用 mongoexport 转储数据,以便使用 python 的科学库或类似的东西进行处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句