MongoDB 客户端命令

By | 2022年12月7日

借助现有容器查询

客户端安装可参考 Red Hat/CentOS

# K8S版方式进入
kubectl exec -it feemongo-0 -- bash -c "mongo --host feemongo --port 27017 -u <用户名> -p <密码>"
# Docker版进入方式(1e7 是容器ID的前三位)
docker exec -it 1e7 bash -c "mongo --host feemongo --port 27017 -u <用户名> -p <密码>"

# 接着设置好数据库后直接可以查表了
use feepolicy
db.USER.find().pretty()

常用客户端命令

kubectl exec -it feemongo-0 -- bash
mongo --host feemongo --port 27017 -u <用户名> -p <密码>
# 若不需要认证,则直接使用下面的命令即可
#mongo

# 也可以进入 mongo 后认证
#use admin
#db.auth("<用户名>","<密码>")

# 显示所有数据库
show dbs
# 显示当前数据库
db
# 更改当前数据库
use feepolicy
# 获取当前数据库下的所有表
show collections
# 查询用户表中所有数据
db.USER.find()
# 查询用户表中所有数据,以友好格式呈现
db.USER.find().pretty()
# 按 ID 查询用户表中记录
db.USER.find({"_id":ObjectId("<ID>")}).pretty()
# 查询 username字段值为 admin 的记录
db.USER.find({username:{$eq:"admin"}}).pretty()
# 查询地址对象 name 字段值为 空字符串、null 的记录
db.IP_OBJECT.find({name:{$eq:""}})
db.IP_OBJECT.find({name:{$eq:null}})
# 通过传入多个名字,查询多个IP对象
db.IP_OBJECT.find({name:{$in:["3.3.3.0-2_B1Z422","192.168.1.199_AO9ZT22"]}})
# 查询完仅返回每条记录的 name 字段
db.IP_OBJECT.find({name:{$in:["3.3.3.0-2_B1Z422","192.168.1.199_AO9ZT22"]}}, {"_id":0, "name":1})
# 删除用户表中所有数据,不删除表,若要删除表情用 drop 方法
db.USER.remove({})
# 删组织架构菜单
db.MENU.remove({code:'xyz'})  

# 遍历表数据,并用每条数据的 name 值在其他表中创建新记录
db.USER_GROUP_BACKUP.find().forEach( function(doc) { print( "user: " + doc.name ); db.USER_GROUP.insertOne(doc); } );

# 更新 xyz 这条数据
db.MENU.update({'code':'xyz'},{$set:{'pageMenuType':'ROUTE','resource':'setting.collection.profile','action':''}})

安装 mongosh

下载 mongosh-1.6.0-linux-x64.tgz,然后按一下命令安装:

tar -xzvf mongosh-1.6.0-linux-x64
cd mongosh-1.6.0-linux-x64/bin
cp mongosh /usr/local/bin/
cp mongosh_crypt_v1.so /usr/local/lib/

# 提示:安装好后解压的目录可以直接删掉了

经测,使用 uri连接字符串连接副本集,执行 –eval 脚本时,必须用这个 mongosh 才会返回结果,用 mongo 命令不行:

mongosh --quiet --eval 'use policy;' --eval 'DBQuery.shellBatchSize=99999999;db.DEVICE_PROFILE_EXTENSION.find({enableLogMonitor:true}, {'_id':0, 'deviceIP':1})' -p admin.0511# mongodb://sec@192.168.3.222:27011,192.168.3.222:27012,192.168.3.222:27013/admin?serverSelectionTimeoutMS=600000 

选项参考:https://www.mongodb.com/docs/mongodb-shell/reference/options/

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注