【问题标题】:In what cases mongoexport can be used?在什么情况下可以使用mongoexport?
【发布时间】:2017-11-30 11:27:56
【问题描述】:

来自documentation,它说要避免在 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
}

执行以下命令将类型作为对象和字符串,

db.testCollection.findOne()._id 的类型; 输出:对象

db.testCollection.findOne().title 的类型; 输出:字符串

如果在上述集合上运行 mongoexport 可能会或可能不会保证数据的保存,因为它包含数据类型字符串和对象。 (我怀疑任何文件都不会有字符串、objectID 数据类型)

在这种情况下,this list of bson types link description here 根本不应该使用 mongoexport

我的问题是

在什么情况下 mongoexport 可以与示例集合一起使用?

注意: 我想使用 mongoexport,mongodump 不是一个选项

【问题讨论】:

标签: json mongodb bson mongoexport


【解决方案1】:

那个警告实际上已经过时了!我刚开始和 MongoDB 团队讨论,他们打算remove it

Mongoexport 现在使用MongoDB Extended JSON 来保存类型信息。

【讨论】:

    【解决方案2】:

    文档中该段落的意思是,对于 mongoexport/mongoimport,不保证恢复的数据库中的数据将与原始源中的数据完全匹配。这是因为 JSON 本身并不支持许多 BSON 数据类型,例如 Date、MinKey、ObjectId 等。因此 mongoexport 必须做一些变通方法来为这些类型导出至少 something。这是它导出 ObjectId 字段的方式,例如:

    "_id": {"$oid": "531701fdb9e3b40002000002"}
    

    可靠地备份/恢复您的数据,请使用 mongodump/mongorestore。

    在什么情况下 mongoexport 可以与示例集合一起使用?

    当您想要获得有点人类可读的数据快照时。 JSON 在大多数语言中也得到了很好的支持,因此您可以使用 mongoexport 转储数据,以便使用 python 的科学库或类似的东西进行处理。

    【讨论】:

    • 编辑了问题:),我不能使用 mongodump/mongorestore
    • @forum.test17:好吧,那是你的问题。您要么使用 mongodump,要么忘记可靠的备份还原。也就是说,mongoexport/mongoimport 不应该崩溃,但它们可以破坏您的数据。
    • 所以你的意思是 mongoexport/mongoimport 是没有用的,即使是在上面的例子中最小的一个记录集合 :(,如果是这样,mongodb 怎么会包含这些二进制文件 :(
    • 不完全理解,等待其他答案,如果没有将接受 urs :)
    • 使用Extended JSON,mongoexport 会保留类型信息。
    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2012-10-21
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多