Has_and_belongs_to_many索引mongoid

时间:2014-02-27 15:23:15

标签: ruby mongodb mongoid

我在用户和项目之间有很多关系,而且效果很好。但是我想在 mongoid

中对此场景进行建模
db.projects.insert(
  { 
    "name" : "Test project",
    "memberships" : [
      {
        "user_id" : ObjectId("4d730fcfcedc351d67000002"),
        "role" : "administrator"
      },
      {
        "role" : "editor",
        "user_id" : ObjectId("4d731fe3cedc351fa7000002")
      }
    ]
  }
)

我阅读了Mongoid的文档,关于我必须这样做的关系:

has_and_belongs_to_many :preferences, index: true

并创建如下:

rake db:mongoid:create_indexes

但是当我坚持下去时,它会保存关系,但不会创建索引。 Modeling many-to-many :through with Mongoid/MongoDB问完全相同的问题,但答案并没有说明如何在Mongoid中做到这一点,除非我错过了什么。

1 个答案:

答案 0 :(得分:1)

这是与用户进行多对多关联的项目记录示例:

{ 
  "_id" : ObjectId("53148dae69616db0c7000000"), 
    "user_ids" : 
    [   
      ObjectId("53148dbd69616db0c7010000"),     
      ObjectId("53148dc169616db0c7020000") 
     ] 
 }

并且相关索引将如下所示:

  {
    "v" : 1,
    "key" : {
        "user_ids" : 1
    },
    "ns" : "mydb.projects",
    "background" : true,
    "name" : "user_ids_1"
   }

您发布的那个会员资格'子文档是与User关联的子文档。要在这种情况下索引user_ids,您需要执行类似

的操作
db.projects.ensureIndex({"memberships.user_id": 1})