我有两个馆藏,即员工和部门。在那里我使用has_many和belongs_to
引用了部门的员工集合的department_id字段。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,帮助我
答案 0 :(得分:4)
这个问题从标题本身来说本质上是有缺陷的。您可能知道,但Mongo不是关系数据库,因此您应该避免将其用于高度关系数据模型。
Mongo没有JOIN查询的概念,因此查询的简单关系比在SQL数据库中查询要贵得多。
管理这种关系的传统方式是在关系的一侧保留一个id列表。如果您经常询问"哪些员工属于x部门?"然后在每个Department对象上保留一个employee_id列表。然后你可以通过id查找。如果您经常询问"员工属于哪个部门?",那么您所要做的就是在每个Employee对象上存储department_id,然后在Department数据库中查询它。
如果您不必在Departmental上下文之外使用Employees,您可能需要考虑在Department对象中嵌入完整的员工文档列表。
我不熟悉Mongo for Rails,所以我无法给你特定的代码示例。