如何使用robomongo从Mongodb导出json
所以我对MongoDB
了解不多。 我有RoboMongo
使用我连接到MongoDB。 我需要做的是 – 在MongoDB中有一个集合。 我想从该集合中导出数据,以便将其保存到文件中。
我用这个界面打开集合中的数据作为文本,并做了一个CTRL + A
并粘贴到一个文本文件中。 然而,我发现并不是所有的数据都被复制,而且文本数据中的许多注释自然会打破JSON。
我想知道如果RoboMongo有一个Export As JSON
设施,以便我可以做一个干净的出口。
任何指针都表示赞赏!
您可以使用tojson
将每个logging转换为MongoDB shell脚本中的 JSON。
在RoboMongo中运行这个脚本:
records = []; var cursor = db.getCollection('foo').find({}, {}); while(cursor.hasNext()) { records.push(cursor.next()) } print(tojson(records));
这会将所有结果打印为类似JSON的数组。
结果不是真的JSON! 某些types(例如date和对象ID)会作为JavaScript函数调用打印,例如ISODate("2016-03-03T12:15:49.996Z")
。
对于较大的结果集可能不是非常有效,但是可以限制查询。 或者,您可以使用mongoexport
。
这里有一些MongoDB GUI,其中一些内置了对数据导出的支持。 您可以在http://mongodb-tools.comfind完整的MongoDB GUI列表
您已经询问了有关导出查询结果的信息,而不是导出整个集合的信息。 给3T MongoChef MongoDB GUI一个试试看,这个工具支持你的具体用例。
感谢先驱报,
Robomongo的shellfunction将解决这个问题。 在我的情况下,我需要几列作为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
我不认为robomongo有这样的function。 所以你最好使用mongodb函数作为mongoexport的特定集合。
http://docs.mongodb.org/manual/reference/program/mongoexport/#export-in-json-format
但是,如果您正在寻找一个备份解决scheme更好使用
mongodump / mongorestore
不要在shell上运行这个命令,在带有数据库名称,集合名称和文件名的命令提示符下input这个脚本,全部replace占位符。
mongoexport --db (Database name) --collection (Collection Name) --out (File name).json
这个对我有用。
扩展Anish的答案,我想要的东西,我可以适用于任何查询自动输出所有字段与必须在打印语句中定义它们。 它可能可以简化,但这是一个快速和肮脏的工程伟大的:
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); }
如果你想使用mongoimport ,你需要这样输出:
db.getCollection('tables') .find({_id: 'q3hrnnoKu2mnCL7kE'}) .forEach(function(x){printjsononeline(x)});
使用robomongo shell脚本:
//on the same db var cursor = db.collectionname.find(); while (cursor.hasNext()) { var record = cursor.next(); db.new_collectionname.save(record); }
使用mongodb的导出和导入命令
您可以将--jsonArray
参数/标志添加到您的mongoexport
命令,这将导出结果作为单个json数组。
然后只需在导入时再次指定--jsonArray
标志。
或者删除文件中的起始和结束数组括号[],然后用mongoimport
命令导入修改的&导出的文件,而不使用--jsonArray
标志。
有关此处的导出的更多信息,请访问: https : //docs.mongodb.org/manual/reference/program/mongoexport/#cmdoption–jsonArray
从这里导入: https : //docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption–jsonArray