如何将mongodb独立或聚合结果存储到文件

我是mongodb视图的新手。我有一个明显的手机号码结果,我想将它们存储在csv文件中。

下面是我的查询,它运行正常:

db.myCollection.distinct('jsonObject.keyIdentifier',{'$and' : [{'jsonObject.responseRaw' : {$not: /<Amount>/}},{'jsonObject.createDate':{$gt: '2020-05-12'} }]})

输出:在外壳/控制台上

["9898989896","9898989897","9898989898",...,...
]

我读了一些我不能仅仅将结果导出到平面文件的地方。我需要先创建一个视图。然后,我需要将该视图导出到文件中。但是我无法生成视图。.我尝试了以下操作

db.createView("jsonObject.keyIdentifier","myCollection",[{ $group: { _id: "'$and' : [{'jsonObject.responseRaw' : {$not: /<Amount>/}},{'jsonObject.createDate':{$gt: '2020-05-12'} }]"}}]);

然后我编写导出查询:

mongoexport -d MongoDB -c jsonObject.keyIdentifier --type=csv -f "_id" -o D:\uploads\DAta\csvFile\report111.csv

但是我却得到了csv文件中的文本

_id
"'$and' : [{'jsonObject.responseRaw' : {$not: /<Amount>/}},{'jsonObject.createDate':{$gt: '2020-05-01'} }]"

如何解决这个难题……如何将输出存储保存到文件中。

iCMS 回答:如何将mongodb独立或聚合结果存储到文件

由于您要做的就是将查询结果写入文件,并且由于默认mongoexport不支持任何聚合查询而不是创建视图并执行操作,因此您可以尝试如下操作: / p>

mongo --host='mongodb+srv://uname:password@cluster10-abcde.mongodb.net/dbName?retryWrites=true&w=majority' --eval 'printjson(db.collectionName.aggregate([{"$group" : {"_id" : "",authors: {"$addToSet" : "$author"}}},{"$project" : {"_id" :0}}]).toArray());' | tail -n 1 > pathToFile.json

与您的情况一样,由于在执行结束时执行.distinct或类似的$group on no condition i.e; {$group : {_id : ''}},所以您将始终只有一个文档或数组,使用tail -n 1将有助于仅打印实际文档的最后一行,否则整个执行状态将被写入文件。

,

好的,这里对我有用的是$out的{​​{1}}方法的aggregate阶段。我所做的是通过mongodb将汇总结果存储到新的collection(它将自动生成),然后使用$out语句将其导出到csv。步骤如下:

1。

mongoexport

2。

db.myCollection.aggregate([{'$match':{'$and' : [{'jsonObject.responseRaw' : {'$not': /<Amount>/}},{'jsonObject.createDate':{'$gt': '2020-05-01'}}]}},{'$group':{'_id': '$jsonObject.keyIdentifier'}},{$out: "collectionB"}])

注意:这里mongoexport -d MyMongoDb -c collectionB -f _id --csv > D:\uploads\DAta\csvFile\results1111.csv 是指示字段;创建-f时需要。我只需要csv

本文链接:https://www.f2er.com/2292947.html

大家都在问