【问题标题】:MongoDB: mapping collection names for userMongoDB:为用户映射集合名称
【发布时间】:2016-11-18 14:55:44
【问题描述】:

我有以下 MongoDB 的极端案例,希望您能帮助我解决。

我的 MongoDB 数据库由多个独立用户使用,并且存在技术限制,使我无法为每个用户创建数据库。用户不受信任。用户将创建具有任意名称的集合。

有没有办法从另一个用户的集合中“命名空间”一个用户的集合?例如,当用户“jim”创建集合“orders”时,它不会与用户“bob”创建集合“orders”发生冲突。

用户通过受 SSL 保护的通道进行身份验证和连接。

【问题讨论】:

  • 这些是 MongoDB 用户还是应用程序的用户?
  • 他们是 MongoDB 用户

标签: mongodb


【解决方案1】:

不要在 DB 中创建这么多集合。在一个集合中,您在一个文档中维护该集合字段。因此,您将能够通过“_id”唯一字段访问所有集合。并且所有文档的字段和值都将根据用户的选择。

例如,您有一个集合“user_collection”,其中存储了用户的所有集合详细信息。

user_collection
{
 { "_id" : "0921092109227812",
   "collectionName": "orders",
   "user": ObjectId(Ref_Id1),
   "fields": []
 },
 { "_id" : "5686565681232344",
   "collectionName": "orders",
   "user": ObjectId(Ref_Id2),
   "fields": []
 }
}

我刚刚给了你架构。您可以根据您的要求详细说明此架构。

【讨论】:

  • 不能告诉用户写入特定的集合。不幸的是,这个答案不符合技术限制。
猜你喜欢
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
  • 2014-09-02
  • 2013-08-29
  • 2014-09-22
  • 1970-01-01
相关资源
最近更新 更多