【问题标题】:Mongoid Query By Referenced DocumentMongoid 参考文献查询
【发布时间】:2014-04-29 10:17:14
【问题描述】:

什么是 mongoid/ruby 语法:

我想查询一个Parent,包括所有Children(急切地)通过一些独特的Child属性(不是_id)搜索。

class Parent
  include Mongoid::Document
  field :first_name, :type => String
  field :last_name, :type => String

  has_many :children, :class_name => 'Child', :inverse_of => :parent
end

class Child
  include Mongoid::Document
  field :first_name, :type => String
  field :last_name, :type => String

  belongs_to :parent, :class_name => 'Parent', :inverse_of => :children
end

在 SQL 中,我会写

SELECT p.*, c.*
FROM   Parent p
INNER JOIN Child c
ON     c.parent_id = p._id
WHERE EXISTS (
    SELECT 1 FROM Child c2 WHERE c2.first_name = 'Aaron' AND c2.parent_id = p._id
);

【问题讨论】:

  • mongoid 你用的是哪个版本?
  • mongoid 版本 3.0.23
  • 我是否应该费心尝试创建一个查询?我的心态一直是减少数据库请求的数量,但我想我可以忍受,c = Child.find_by(:first_name => 'Aaron'); p = Parent.includes(:children).find(c.parent_id)

标签: ruby mongodb mongoid


【解决方案1】:

试试这个

children = Child.where(:first_name => "Aaron")
children.each do |child|
   parent = child.parent
end

如果您只需要基于上述条件的发布详细信息,您可以运行此

Parent.includes(:child).where('child.first_name' => "Aaron")

但对于孩子,您必须再次进行查询。

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    相关资源
    最近更新 更多