我刚刚开始一个使用 Mongoid ORM for MongoDB 的新 Rails 3 项目。只有一件事我无法理解,那就是如何有效地建立多对多关系。现在很有可能我可能错误地处理了这个问题,但据我所知,我的项目中至少有两个容器需要多对多关系。我更愿意将这两个模型都视为“一流”模型,并为每个模型分配自己的容器。
这是我能想到的构建多对多关系的最简单方法:
// Javascript pseudo modeling
// -------------------- Apps
{
app: {
_id: "app1",
name: "A",
event_ids: ["event1","event2"]
}
}
{
app: {
_id: "app2",
name: "B",
event_ids: ["event1"]
}
}
// -------------------- Events
{
event: {
_id: "event1",
name: "Event 1",
}
}
{
event: {
_id: "event2",
name: "Event 2",
}
}
据我所知,这是推断多对多关系所需的最少信息量。我的假设是我可能必须有一个 map reduce 过程来确定哪些应用程序属于一个事件。如果将应用程序添加到事件模型中或从事件模型中删除,我还必须在 Event 上编写提交提交/保存挂钩以更新 App.event_ids。
我在正确的轨道上吗?如果有人有任何多对多关系的 Mongoid 或 Mongomapper 代码示例,请分享。