Shell脚本中执行MongoDB命令

Posted by Jeremy Song on 2021-09-05
Estimated Reading Time 2 Minutes
Words 582 In Total
Viewed Times

对于平常经常使用 MongoDB 的用户来讲,势必会经常进行查询、维护等操作。一般情况下,我们会使用图形化界面的客户端工具来操作,例如 Studio 3T for MongoDB

那万一因为某种原因你只能在封闭环境(外网不可达或未暴漏 MongoDB 服务端口)上操作,并且是大量操作。你会怎么办?

这种面对大量shell下大量操作的情况,我们一般会写个脚本来执行,省心省力。但您有没有在shell 脚本中执行 MongoDB命令的经验呢?如果没有的话这边文章可以作为您的参考。

在Shell脚本中执行

想在shell脚本执行参考如下示例即可:

1
2
3
4
5
6
7
8
9
#! /bin/bash

./mongo 127.0.0.1:27017/test <<EOF
var cursor = db.UserInfo.find();
while(cursor.hasNext()){
var item = cursor.next();
print(item.userAccount);
}
EOF

shell脚本说明:

  • ./mongo mongo可执行程序,即登录的命令行命令
  • 127.0.0.1:27017 MongoDB服务的IP和端口
  • test 要操作的MongoDB数据库名
  • <<EOF … EOF 待执行的命令。注意最后一个EOF必须在行首,前面不要加任何字符。并且EOF可以替换成任意的字符串(两个需要保持一致)。等多的shell子命令的知识您可以再自行翻阅下资料,这里就不多讲了。

MongoDB语句作为一个js脚本来执行

这时,您可以参照如下示例,准备两个文件:

  • test.js
1
2
3
4
5
var cursor = db.UserInfo.find();
while(cursor.hasNext()){
var item = cursor.next();
print(item.userAccount);
}
  • shell脚本
1
2
3
#! /bin/bash

./mongo 127.0.0.1:27017/test ./test.js

shell脚本说明:

  • ./mongo mongo可执行程序,即登录的命令行命令
  • 127.0.0.1:27017 MongoDB服务的IP和端口
  • test 要操作的MongoDB数据库名

您也可以在会话中使用如下方式执行:

1
./mongo 127.0.0.1:27017/test ./test.js

最后

如上就是两种简单的在shell下执行MongoDB的方式。

通过上面的方法,您可以将脚本的输出重定向到一个文件,或使用管道命令结合其他命令行工具的方式来进行二次分析,以达到事半功倍的效果。


欢迎关注我的公众号 须弥零一,跟我一起学习IT知识。


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !