Gorm mongodb 1.0-M2 - 保存/获取时选择集合

时间:2011-03-03 10:06:16

标签: grails mongodb gorm grails-plugin

在mongodb中保存/获取域对象时,有没有办法动态设置集合?我想在每次获取/保存时限制用户访问某个集合,因为它将成为一个多租户数据库,每个客户都有自己的集合(我不使用hibernate,所以multitenant-plugin不是一个选项)

我的想法是设置一个标识正确集合的服务,这是基于会话的(集合名称将取决于网址解析等)

我想过用插件中的doWithDynamicMethods覆盖所有域类的get / set。但我需要能够在“保存”和“获取”时设置集合。

所以我知道你可以使用数据库mongo对象指定一个集合,但是你可以通过调用'save'.e.g来传递'collection'这个名字。 Person p = new Person(name:john).save(collection:collectionNameService.getCollectionName(Person),flush:true)

在这种情况下,我可以覆盖域对象的泛型save / get,并使用额外的'collection'参数调用save。

建议欢迎:)

亲切地说,每个

1 个答案:

答案 0 :(得分:0)

我做了一些非常相似的事情,但有一些PHP库。

但是,修改“save”和“load”方法从正确的集合加载是绝对有意义的。 MongoDB会自动为您创建集合,因此在基本级别上这将有效。

只有两个主要警告:

  1. 您是否正在为这些新馆藏添加索引?您不希望在每个操作上都使用“ensureIndex”,但您可能想要某种方式知道已创建新集合以便您可以编制索引(可能是服务器上的作业)
  2. 您打算有多少用户?您可能希望查看有关number of collections available
  3. 的一些限制