如何在PyMongo中执行db.getUsers()等MongoDB Shell命令获取数据?
PyMongo 执行用户查询及类Shell命令的实现方案
PyMongo 不提供直接解析执行 MongoDB Shell 语法字符串的接口,所有 Shell 中封装的辅助方法,本质都是向MongoDB服务端发送标准的BSON格式命令,只要找到对应方法底层的服务端原生命令,通过PyMongo的command()方法调用即可。
实现db.getUsers()的具体方法
db.getUsers()是Shell侧封装的辅助方法,对应的服务端原生命令为usersInfo,直接调用即可拿到和Shell执行完全一致的返回结果:
from pymongo import MongoClient # 初始化数据库连接 client = MongoClient("你的MongoDB连接地址") # 切换到目标数据库,和Shell中use <db>的逻辑一致 db = client["你的目标数据库名"] # 等价于Shell执行db.getUsers(),返回当前库下的所有用户信息 user_list = db.command("usersInfo") print(user_list)
常用扩展参数和Shell完全对齐:
- 查询全实例所有数据库的用户:执行
db.command({"usersInfo": {"forAllDBs": True}}) - 按条件过滤指定用户:执行
db.command({"usersInfo": {"user": "指定用户名", "db": "用户所属库"}}) - 返回用户加密凭证信息:执行
db.command({"usersInfo": 1, "showCredentials": True})
其他Shell命令的通用适配逻辑
- 不要尝试直接把Shell中书写的
db.xxx()整段代码作为字符串传入PyMongo执行,PyMongo没有内置Shell语法解析器,这类调用不会生效。 - 如果你不知道某个Shell方法对应的底层服务端命令,可以打开MongoDB Shell的命令日志,执行对应Shell方法时,控制台会打印实际发往服务端的BSON命令结构体,直接把这个结构体作为参数传入
db.command()即可拿到完全一致的返回结果。 - 绝大多数Shell的数据库级操作方法,都能在官方文档中找到对应的服务端命令映射,直接调用即可。
内容的提问来源于stack exchange,提问作者sherin
相关产品推荐
相关产品推荐

