Ruby on rails 在MongoDB中使用关系
我有两个系列,即员工和部门。在这里,我引用了department using中employee collection的department\u id字段has\u many and own\u toRuby on rails 在MongoDB中使用关系,ruby-on-rails,mongodb,Ruby On Rails,Mongodb,我有两个系列,即员工和部门。在这里,我引用了department using中employee collection的department\u id字段has\u many and own\u to class Employee include Mongoid::Document field :name, type: String field :age, type: Integer field :empid, type: String field :manager_
class Employee
include Mongoid::Document
field :name, type: String
field :age, type: Integer
field :empid, type: String
field :manager_id, type: Integer
field :department_id, type:Integer
attr_accessible :age, :empid, :name, :department_id, :manager_id
validates_presence_of :name
validates_uniqueness_of :empid
belongs_to :department
end
class Department
include Mongoid::Document
field :name, type: String
attr_accessible :name
has_many :employees
end
现在我想引用“使用员工的部门集合id,帮助我”这个问题本身就有缺陷。您可能知道,但Mongo不是关系数据库,因此应该避免将其用于高度关系数据模型 Mongo没有连接查询的概念,因此简单关系的查询成本要比SQL数据库中的查询成本高得多 管理此关系的传统方法是在关系的一侧保留一个id列表。如果您更经常询问“哪些员工属于x部门?”则在每个部门对象上保留员工ID列表。然后,您可以通过id进行查找。如果您更经常地询问“员工y属于哪个部门?”,那么您所要做的就是在每个员工对象上存储一个部门id,然后查询部门数据库
如果您不需要与部门外的员工一起工作,您可能需要考虑在部门对象中嵌入完整雇员文档列表。
我不熟悉Mongo for Rails,因此无法给出具体的代码示例。从标题本身来看,这个问题本身就是有缺陷的。您可能知道,但Mongo不是关系数据库,因此应该避免将其用于高度关系数据模型 Mongo没有连接查询的概念,因此简单关系的查询成本要比SQL数据库中的查询成本高得多 管理此关系的传统方法是在关系的一侧保留一个id列表。如果您更经常询问“哪些员工属于x部门?”则在每个部门对象上保留员工ID列表。然后,您可以通过id进行查找。如果您更经常地询问“员工y属于哪个部门?”,那么您所要做的就是在每个员工对象上存储一个部门id,然后查询部门数据库
如果您不需要与部门外的员工一起工作,您可能需要考虑在部门对象中嵌入完整雇员文档列表。
我不熟悉Mongo for Rails,因此无法给出具体的代码示例。Mongo不是关系数据库,但它并不反对关系。它们的关键是尝试和“嵌套”关系(例如,department类将所有教师作为子对象),或者在代码中进行连接,而不是在DB中。至少是阿福。更多信息:注意到这一点,我将+1这个:)你是对的,但是对于刚开始使用mongo的人来说,最好让他们忘记关系模型,以面向文档的方式工作,然后当他们绝对需要关系时,他们可以用正确的方式来做。mongo不是关系数据库,但它并不反对关系。它们的关键是尝试和“嵌套”关系(例如,department类将所有教师作为子对象),或者在代码中进行连接,而不是在DB中。至少是阿福。更多信息:注意到这一点,我将+1这个:)你是对的,但是对于刚开始在mongo工作的人来说,最好让他们忘记关系模型,以面向文档的方式工作,然后当他们绝对需要关系时,他们可以用正确的方式来做。