是否可以将查询结果写入mongo js脚本中的文件。我搜索了很多,但我找不到任何解决方案。
例如: -
cursor = db.users.find();
while(cursor.hasNext()) {
cursor.next();
// writing the cursor output to file ????<br/>
}
答案 0 :(得分:78)
您可以使用print然后重定向输出:
的script.js:
cursor = db.users.find();
while(cursor.hasNext()){
printjson(cursor.next());
}
然后运行脚本并将输出重定向到文件:
mongo --quiet script.js > result.txt
答案 1 :(得分:22)
http://www.mongodb.org/display/DOCS/Scripting+the+shell段落“脚本和互动/印刷之间的差异”。
./ mongo server.com/mydb --quiet --eval“db.users.find()。forEach(printjson);” &GT; 1.txt的
答案 2 :(得分:13)
您可以使用forEach()
跳过while循环:
db.users.find().forEach(printjson);
答案 3 :(得分:6)
每当我需要将mongo查询的结果写入本地文件时,通常都使用Richard Shelby May 6, 1934 (age 84) Lawyer U.S. House
Alabama Senate January 3, 1987 2022
Assumed office: January 3, 2018
函数。
示例:假设您很快需要查找所有注册用户的电子邮件,然后将其发送给市场部门的好友Jim。
writeFile(pathToFile, stringContents)
或者如果吉姆期望是CSV文件,那么
$ mongo mongodb://my-fancy-mongo-server --ssl -u fancy_username -p fancy_password
successfully connected to my-fancy-mongo-server!
> emails = db.users.distinct('email_address')
> writeFile("jims_email_list.json", tojson(emails))
您现在可以向Jim发送电子邮件列表并保存一天!
要注意有关$ mongo mongodb://my-fancy-mongo-server --ssl -u fancy_username -p fancy_password
successfully connected to my-fancy-mongo-server!
> emails = db.users.distinct('email_address')
> writeFile("jims_email_list.csv", emails.join("\n"))
函数的重要事项:
答案 4 :(得分:3)
将Mongo drivers中的一个用于通用语言(例如Python,Ruby,Java等),并将结果写入文件,以您可以采用的格式,这不是更简单吗?使用(如CSV等)?
更新:根据mongodump的文档,您可以使用查询导出集合:
$ ./mongodump --db blog --collection posts
-q '{"created_at" : { "$gte" : {"$date" : 1293868800000},
"$lt" : {"$date" : 1296460800000}
}
}'
但是,您需要将该集合导入MongoDB以对其进行操作,或使用mongoexport使用与-q
相同的查询标记(mongodump
)导出为JSON或CSV。
答案 5 :(得分:2)
对于distinct,您必须创建包含内容的script.js文件:
mongo = new Mongo("localhost");
doctor = mongo.getDB("doctor");
users = doctor.getCollection("users");
cities = users.distinct("address.city");
printjson(cities);
然后在控制台运行中:
mongo --quiet script.js > result.txt