我使用mongoexport将一些数据导出到.json格式的文件中,但是文件有一个由_id:IDVALUE元组引入的大量开销.
我发现了一个类似的帖子有没有办法从MongoDB中检索没有_id字段的数据?如何在从mongo检索数据时省略_id字段,但不导出.建议使用:.Exclude("_id").我试图重新命名mongoexport的--query参数以某种方式包含.Exclude("_id")参数,但到目前为止所有的尝试都失败了.
请说明这样做的正确方法是什么,还是应该恢复使用某些出口后技术?
谢谢
quu*_*x00 13
似乎没有办法_id使用mongoexport 排除字段(例如).
这是一个替代方案,适用于中等大小的数据库:
mongo myserver/mydb --quiet --eval "db.mycoll.find({}, {_id:0}).forEach(printjson);" > out.txt
Run Code Online (Sandbox Code Playgroud)
在一个大型数据库(数百万条记录)上,它可能需要一段时间,运行这将影响人们尝试在系统上执行的其他操作:
seb*_*ian 12
mongoexport将 的输出通过管道传输到jq并删除_id那里的字段。
mongoexport --uri=mongodb://localhost/mydb --collection=my_collection \
| jq 'del(._id)'
Run Code Online (Sandbox Code Playgroud)
更新:添加jq 的链接。
小智 8
这有效:
mongoexport --db db_name --collection collection_name | sed '/"_id":/s/"_id":[^,]*,//' > file_name.json
Run Code Online (Sandbox Code Playgroud)
我知道您指定要导出JSON,但如果您可以替换CSV数据,则本机mongo导出将起作用,并且将比上述解决方案快得多
mongoexport --db <dbName> --collection <collectionName> --csv --fields "<fieldOne>,<fieldTwo>,<fieldThree>" > mongoex.csv
Run Code Online (Sandbox Code Playgroud)
我应用了 quux00 的解决方案,但在输出中forEach(printjson)打印MongoDB 扩展 JSON表示法(例如"last_update" : NumberLong("1384715001000").
最好使用以下行:
db.mycoll.find({}, {_id:0}).forEach(function (doc) {
print( JSON.stringify(doc) );
});
Run Code Online (Sandbox Code Playgroud)
mongoexport 似乎没有这种选择。
使用ramda-cli剥离,_id将看起来像:
mongoexport --db mydb --collection mycoll -f name,age | ramda 'omit ["_id"]'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14200 次 |
| 最近记录: |