我在用户和项目之间有很多关系,而且效果很好。但是我想在 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中做到这一点,除非我错过了什么。
答案 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})