Mattis Asp Asked: 2018-09-07 04:05:51 +0800 CST2018-09-07 04:05:51 +0800 CST 2018-09-07 04:05:51 +0800 CST Mongodb 对更新的限制只允许“$push”运算符 772 MongoDB V 4.0 我想通过只允许向集合中插入新内容来限制用户的角色。作为新文档,或作为文档的附件。我不希望用户能够更新(覆盖)文档中的字段,但是更新/(追加/添加)没问题。有什么好的策略吗?我现在的两个选择是: 创建两个集合。限制一个并允许另一个完全更新,一旦所有更新完成,将文档从一个集合复制/移动到另一个集合。 备选方案 2) 将角色限制为仅限 update.$push 运算符,这是一种附加到数组运算符的类型。到目前为止,我还没有找到一种方法来做到这一点。 mongodb role 1 个回答 Voted Best Answer Stennie 2018-09-07T17:12:07+08:002018-09-07T17:12:07+08:00 MongoDB 的服务器角色和权限(在 MongoDB 4.0 中)不提供您所追求的粒度级别。但是,我认为在您的应用程序逻辑中可以更好地处理这种级别的控制。 例如,即使可以限制对$pushoperator的写访问,还有其他选项$slice可能会导致删除现有的数组元素。 有什么好的策略吗? 我建议提供用于插入和更新的 API,而不是提供对 MongoDB 的直接访问。您可以在 API 端点中实施任何所需的验证和过滤。 您可能还需要考虑实施版本控制方法来跟踪对单个文档的修改历史,以便您可以在需要时审核或回滚更改。Ask Asya 博客上有一系列很棒的帖子,其中包含常见示例和注意事项: 如何使用 MongoDB 跟踪版本 关于如何使用 MongoDB 跟踪版本的进一步思考 MongoDB 的最佳版本
MongoDB 的服务器角色和权限(在 MongoDB 4.0 中)不提供您所追求的粒度级别。但是,我认为在您的应用程序逻辑中可以更好地处理这种级别的控制。
例如,即使可以限制对
$push
operator的写访问,还有其他选项$slice
可能会导致删除现有的数组元素。我建议提供用于插入和更新的 API,而不是提供对 MongoDB 的直接访问。您可以在 API 端点中实施任何所需的验证和过滤。
您可能还需要考虑实施版本控制方法来跟踪对单个文档的修改历史,以便您可以在需要时审核或回滚更改。Ask Asya 博客上有一系列很棒的帖子,其中包含常见示例和注意事项: