{"$in"=>["Student"]}}, "$orderby-6ren">
gpt4 book ai didi

ruby-on-rails - Mongoid 查询 has_many

转载 作者:可可西里 更新时间:2023-11-01 09:11:43 25 4
gpt4 key购买 nike

我有一个相当简单的 mongodb 模型目前有2个收藏学生类(class)(嵌入主题)

class Student < User
include Mongoid::Document
has_many :courses

class Course
include Mongoid::Document
belongs_to :student
embeds_many :subjects

我知道mongoid不支持直接查询has_many即

Student.courses

所以如果我想获得学生科目是唯一的方法

@student = Student.first
Course.find(@student.courses).subjects

目前执行 3 个查询

  MOPED: 127.0.0.1:27017 QUERY        database=test collection=users selector=    {"$query"=>{"_type"=>{"$in"=>["Student"]}}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (1.1775ms)
MOPED: 127.0.0.1:27017 QUERY database=test collection=courses selector={"student_id"=>"51f09457b5b605db25000002"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.8862ms)
MOPED: 127.0.0.1:27017 QUERY database=test collection=courses selector={"_id"=>"51f09457b5b605db25000003"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.8380ms)

有没有更有效的方法?我知道我可以将 Course 嵌入 Student,但我也在考虑直接查询 Courses Collection。

最佳答案

试试这个。

Subject.where(:course_id.in => @student.courses.map(&:id))

关于ruby-on-rails - Mongoid 查询 has_many,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com