如何使用robomongo从Mongodb导出json

Und*_*ble 96 mongodb robo3t

所以我不太了解MongoDB.我RoboMongo使用的是连接到MongoDB的.我需要做的是 - MongoDB中有一个集合.我想从该集合中导出数据,以便将其保存到文件中.

我使用界面以集合的形式打开集合中的数据,CTRL + A并将其粘贴到文本文件中.但是我发现并非所有数据都被复制,并且文本数据中有很多注释自然会破坏JSON.

我想知道RoboMongo是否有Export As JSON设施,以便我可以做一个干净的出口.

任何指针都表示赞赏!

Flo*_*ter 56

您可以使用tojsonMongoDB shell脚本中将每个记录转换为JSON .

在RoboMongo中运行此脚本:

var cursor = db.getCollection('foo').find({}, {});
while(cursor.hasNext()) {
    print(tojson(cursor.next()))
}
Run Code Online (Sandbox Code Playgroud)

这会将所有结果打印为类似JSON的数组.

结果不是真正的JSON!某些类型(如日期和对象ID)将作为JavaScript函数调用打印,例如ISODate("2016-03-03T12:15:49.996Z").

对于大型结果集可能效率不高,但您可以限制查询.或者,您可以使用mongoexport.

  • @FlorianWinter这只是来自摆弄的随机发现.更好的解决方案是`tojson(db.getCollection(...).find(...).toArray())`. (6认同)
  • 它输出的无效json.只是json序列化的记录一个接一个 (3认同)

小智 27

Robomongo的shell功能将解决这个问题.在我的情况下,我需要几列作为CSV格式.

var cursor = db.getCollection('Member_details').find({Category: 'CUST'},{CustomerId :1,Name :1,_id:0})

while (cursor.hasNext()) {
    var record = cursor.next();   
    print(record.CustomerID + "," + record.Name)
}

Output : -------

334, Harison
433, Rechard
453, Michel
533, Pal
Run Code Online (Sandbox Code Playgroud)


小智 26

快速而肮脏的方式:只需编写您的查询db.getCollection('collection').find({}).toArray()并右键单击即可Copy JSON.将数据粘贴到您选择的编辑器中.

在此输入图像描述

  • 整洁的!考虑到 robo3t 中缺乏导出功能,一点也不脏。与其他建议的解决方案相比,对于小数据集要容易得多。 (6认同)
  • 惊人的!只是提醒一下 - 不要在大型​​集合或结果集上运行它:-) (2认同)

小智 19

有一些MongoDB GUI,其中一些内置支持数据导出.您可以在http://mongodb-tools.com找到MongoDB GUI的完整列表

您已询问是否导出查询结果,而不是导出整个集合.给3T MongoChef MongoDB的GUI一个尝试,这个工具对您的具体使用情况的支持.


rus*_*mer 10

你在电子表格中说"导出到文件"?喜欢.csv?

IMO这是在Robo 3T(以前的robomongo)中最简单的方法:

  1. 在Robo 3T GUI的右上角有一个"在文本模式下查看结果"按钮,单击它并复制所有内容

  2. 将所有内容粘贴到此网站:https://json-csv.com/

  3. 单击下载按钮,现在您可以在电子表格中找到它.

希望这有助于某人,因为我希望Robo 3T具有出口功能


Yog*_*til 9

不要在shell上运行此命令,在命令提示符下输入此脚本,其中包含数据库名称,集合名称和文件名,所有这些都替换了占位符.

mongoexport --db (Database name) --collection (Collection Name) --out (File name).json
Run Code Online (Sandbox Code Playgroud)

这个对我有用.


小智 8

我不认为robomongo有这样的功能.因此,您最好将mongodb函数用作特定Collection的mongoexport.

http://docs.mongodb.org/manual/reference/program/mongoexport/#export-in-json-format

但如果您正在寻找备份解决方案,最好使用

mongodump / mongorestore
Run Code Online (Sandbox Code Playgroud)


sha*_*ron 6

如果您想使用mongoimport,您需要以这种方式导出:

db.getCollection('tables')
  .find({_id: 'q3hrnnoKu2mnCL7kE'})
  .forEach(function(x){printjsononeline(x)});
Run Code Online (Sandbox Code Playgroud)


Mar*_*ust 5

扩展Anish的答案,我希望我可以应用于任何查询以自动输出所有字段而不必在print语句中定义它们.它可以简化,但这是快速和肮脏的东西,效果很好:

var cursor = db.getCollection('foo').find({}, {bar: 1, baz: 1, created_at: 1, updated_at: 1}).sort({created_at: -1, updated_at: -1});

while (cursor.hasNext()) {
    var record = cursor.next();
    var output = "";
    for (var i in record) {
      output += record[i] + ",";
    };
    output = output.substring(0, output.length - 1);
    print(output);
}
Run Code Online (Sandbox Code Playgroud)