我有一个 MongoDB 查询,它返回一组单级 BSON 对象。
db.companies.aggregate([
{ $unwind: {
path: "$addresses", includeArrayIndex: "arrayIndex"}
},
{ $project: {
hrId:1,
arrayIndex:1,
location:'$addresses.location',
street:'$addresses.street',
city:'$addresses.city',
state:'$addresses.state',
country:'$addresses.country',
postCode:'$addresses.postCode'}
}])
Run Code Online (Sandbox Code Playgroud)
我想将其导出到 csv 文件。我一直在网上寻找一个简单的解决方案,但无济于事。如果需要,我很乐意使用 gui/工具来执行此操作。
在此先感谢您的帮助
从逻辑上讲,我们可以将问题分为两部分。
1) 在给定集合上运行聚合
2) 将返回的结果导出到外部文件中。
MongoDB 不直接支持查询结果的导出,但是,我们可以玩个小把戏,让 MongoDB 做我们想做的事。
解决方案:
1) 将聚合结果导出到另一个集合。
2) 使用mongoexport该集合的导出结果到 csv 文件中。
鉴于您的示例,我会添加$out到管道末端。
db.companies.aggregate([
{ $unwind: {
path: "$addresses", includeArrayIndex: "arrayIndex"}
},
{ $project: {
hrId:1,
arrayIndex:1,
location:'$addresses.location',
street:'$addresses.street',
city:'$addresses.city',
state:'$addresses.state',
country:'$addresses.country',
postCode:'$addresses.postCode'}
},
{ $out: "tempCompaniesCollection"}])
Run Code Online (Sandbox Code Playgroud)
此查询将我们的查询结果存储到tempCompaniesCollection集合中。现在我们可以运行mongoexport为
mongoexport -d "database" -c "tempCompaniesCollection" -f "hrId,arrayIndex,location,street,city,state,country,postCode" --type csv -o csvfile.csv
Run Code Online (Sandbox Code Playgroud)
这会将结果导出到名为csvfile.csv.
注意:
mongoexport如果导出类型是 csv,则需要提供文件名。请参阅mongoexport文档。
| 归档时间: |
|
| 查看次数: |
3722 次 |
| 最近记录: |