所以我不太了解MongoDB.我RoboMongo使用的是连接到MongoDB的.我需要做的是 - MongoDB中有一个集合.我想从该集合中导出数据,以便将其保存到文件中.
我使用界面以集合的形式打开集合中的数据,CTRL + A并将其粘贴到文本文件中.但是我发现并非所有数据都被复制,并且文本数据中有很多注释自然会破坏JSON.
我想知道RoboMongo是否有Export As JSON设施,以便我可以做一个干净的出口.
任何指针都表示赞赏!
Flo*_*ter 56
您可以使用tojson在MongoDB 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.
小智 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.将数据粘贴到您选择的编辑器中.
小智 19
有一些MongoDB GUI,其中一些内置支持数据导出.您可以在http://mongodb-tools.com找到MongoDB GUI的完整列表
您已询问是否导出查询结果,而不是导出整个集合.给3T MongoChef MongoDB的GUI一个尝试,这个工具对您的具体使用情况的支持.
rus*_*mer 10
你在电子表格中说"导出到文件"?喜欢.csv?
IMO这是在Robo 3T(以前的robomongo)中最简单的方法:
在Robo 3T GUI的右上角有一个"在文本模式下查看结果"按钮,单击它并复制所有内容
将所有内容粘贴到此网站:https://json-csv.com/
单击下载按钮,现在您可以在电子表格中找到它.
希望这有助于某人,因为我希望Robo 3T具有出口功能
不要在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)
如果您想使用mongoimport,您需要以这种方式导出:
db.getCollection('tables')
.find({_id: 'q3hrnnoKu2mnCL7kE'})
.forEach(function(x){printjsononeline(x)});
Run Code Online (Sandbox Code Playgroud)
扩展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)
| 归档时间: |
|
| 查看次数: |
135849 次 |
| 最近记录: |