码迷,mamicode.com
首页 > 系统相关 > 详细

在shell 上执行mongo 查询

时间:2015-11-25 15:04:32      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

需求

  在写小工具的时候,经常遇到需要从mongodb 里面查东西来用,因为要跟其他bash 工具链结合在一起用,所以最理想的方法是能够在shell 上执行查询,然后pipe 给接下来的工具做处理。

方案

  幸运的是对于mongo 来说做起来是很方便的,只需要使用mongo --eval 即可。例1:

mongo 192.168.1.2:27060/mybase --eval printjson(db.tasks.findOne())

这段脚本首先链接上地址为192.168.1.2:27060 的mongodb 服务器,然后在mybase 数据库下执行后面引号内的javascript,这段javascript 和mongoshell 里的并没有区别。值得注意的是这里是用的mongoshell 的一个全局函数 printjson 用来把查询结果转换成json 打印出来。

例2:

mongo 192.168.1.2:27060/mybase --eval db.tasks.find({type:"danger"}).forEach(printjson)‘

在查询结果不唯一的时候,即不像例1那样使用findOne 返回单一结果,而是返回一个“结果集” 的时候,mongo 实际上返回的是一个可遍历的cursor,这时候如果你用printjson 把查询语句包起来printjson(db.find()...) 的话,实际打印出的是cursor 的内容。正确的做法是forEach 遍历cursor 然后打印每一项。

总结

注意返回内容,一般是一个可遍历的cursor。

 

参考:

http://stackoverflow.com/questions/4837673/how-to-execute-mongo-commands-through-shell-scripts

在shell 上执行mongo 查询

标签:

原文地址:http://www.cnblogs.com/agentgamer/p/4994650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!