mongodb - Pymongo 创建角色问题
问题描述
我正在使用下面的代码来创建一个新角色。
db.createRole(
{
createRole: "role-name",
privileges: [
{resource: {db: "weather_db", collection: ""},
actions: ["insert", "update", "find", "delete"]}
],
roles: [{role: "read", db: "db1"}]
})
但是我不断收到以下错误:
NameError : name "CREATEROLE" not defined
如何解决?
解决方案
pymongo 可能会令人困惑,因为在许多方面命令语法与 mongo shell 中的命令相似或有时完全相同。
但是 pymongo 和 shell 命令并不相同。如果要使用 pymongo 版本,则需要查看pymongo 文档,尤其是管理任务。
此外,pymongo 的键值对表示为 python dict
s。所以必须引用任何键,即
{"key": "value"}
并不是
{key: "value"}
从文档中没有创建角色的特定任务,但是从db.createRole 的 MongoDB 文档中它指出:
db.createRole() 方法包装了createRole命令。
并且 pymongo 确实允许您使用该db.command()
方法运行命令。
最后,delete
不是内置动作;你想要remove
。
把它们放在一起看起来像:
from pymongo import MongoClient
db = MongoClient()['admin']
db.command("createRole", "role-name",
privileges=[{"resource": {"db": "weather_db", "collection": ""},
"actions": ["insert", "update", "find", "remove"]}],
roles=[])
推荐阅读
- android - Cordova - Android - 为什么 Android 操作系统会删除 WebSQL 和本地存储数据?
- javascript - 将输入 ID 更改为错误地更新状态
- go - 反向代理意外 EOF 读取请求正文
- java - Why sendKeys() in Windows IE 11 no longer persists after upgrading to Selenium Java 3.14.0?
- android - 如何使用 animatorSet 更改视图的背景颜色
- swift - 如何使用 Vapor 3 在 PostgreSQL 中存储 Swift 类型(日期、字典等)?
- c# - 参数异常 - 路径不是合法形式?
- sql - 通过外键进行冗余以允许更简单的常见查询?
- regex - 正则表达式将匹配字符串中的所有单词
- c# - MQTTnet 客户端发布