我需要将mongodb聚合查询结果导出到文件。我已连接到远程服务器,所以我需要类似db.myCollection.aggregate([...]).printToFile('C:\Downloads\resultFile.txt')
的东西吗?
答案 0 :(得分:2)
在连接字符串中添加引号,并使用printjson()
打印JSON对象。请注意,aggregate()
返回一个游标,因此您必须遍历它们。如果您不使用forEach
,则只会返回前20位。
这是一个单行命令。
mongo --quiet "mongodb://junior:SECRETPASSWORD@mongo4:9000,mongo5:9000/WebApp?authSource=admin&replicaSet=rs0&readPreference=secondaryPreferred" --eval 'db.cars.aggregate([...]).forEach(function(doc) { printjson(doc);})' > output.txt
更具可读性的多行格式
mongo --quiet \
"mongodb://junior:SECRETPASSWORD@mongo4:9000,mongo5:9000/WebApp?authSource=admin&replicaSet=rs0&readPreference=secondaryPreferred" \
--eval 'db.cars.aggregate([...]).forEach(function(doc) \
{ printjson(doc);})' > output.txt
答案 1 :(得分:1)
我假设基于您的示例路径,Windows是您的操作系统。在这种情况下,您可以使用>
将控制台命令输出重定向到文件。要直接从cmd运行aggregate
,您可以将mongo
用作带有--eval参数的客户端,该参数允许您运行JavaScript代码,请尝试如下操作:
C:\Program Files\MongoDB\Server\4.0\bin>mongo --host <yourhost> --port <yourport> --eval "db.myCollection.aggregate([...])" > C:\Downloads\resultFile.txt