来自documentation,它说要避免使用BSON数据类型的mongoexport
警告 避免使用mongoimport和mongoexport作为完整实例 生产备份。它们不能可靠地保留所有丰富的BSON数据 类型,因为JSON只能表示支持的类型的子集 由BSON。使用MongoDB Backup中描述的mongodump和mongorestore 这种功能的方法。
创建名为“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
}
执行以下命令将type作为object和String,
typeof db.testCollection.findOne()._ id; 输出:对象
typeof db.testCollection.findOne()。title; 输出:字符串
如果在上面的集合上运行mongoexport可能会或可能不会保证数据的保存,因为它包含数据类型字符串和对象。 (我怀疑任何文档都没有string,objectID数据类型)
在这种情况下,不应该使用this list of bson types link description here
中的mongoexport我的问题是
在什么情况下mongoexport可以与示例集合一起使用?
注意: 我想使用mongoexport,mongodump不是一个选项
答案 0 :(得分:0)
文档中的段落意味着,使用mongoexport / mongoimport,无保证,已恢复数据库中的数据将与原始源中的数据完全匹配。这是因为JSON本身不支持许多BSON数据类型,例如Date,MinKey,ObjectId等。因此mongoexport必须做一些变通方法来为这些类型导出至少某些。这是它导出ObjectId字段的方式,例如:
"_id": {"$oid": "531701fdb9e3b40002000002"}
要可靠地备份/恢复数据 ,请使用mongodump / mongorestore。
在什么情况下,mongoexport可以与示例集合一起使用?
当您想获得某种人类可读的数据快照时。 JSON在大多数语言中也得到了很好的支持,因此您可以使用mongoexport来转储数据,以便使用python的科学库或类似的东西进行运算。
答案 1 :(得分:0)
该警告实际上已过时!我刚刚开始与MongoDB团队进行讨论,他们正计划remove it。
Mongoexport现在使用MongoDB Extended JSON来保留类型信息。