簡體   English   中英

Mongoid和Mongodb查詢

[英]Mongoid and Mongodb querying

我有這樣的數據結構

Courses
{
    "name" : "Course1",
    "student_id"
    "subjects" :
    [{
      "level" : "1",
      "short_name" : "Maths",
      "topics" : [{
              "name" : "Algebra 101",
              "week" : "1",
              "submission_week" : ISODate("2013-07-28T00:00:00Z"),
              "correction_week" : ISODate("2013-07-28T00:00:00Z")
              },
              {
              "name" : "Algebra 201",
              "week" : "1",
              "submission_week" : ISODate("2013-07-28T00:00:00Z"),
              "correction_week" : ISODate("2013-07-28T00:00:00Z")
              }
     ]},
     {
      "level" : "2",
      "short_name" : "Chem"
     }
    ]
}

我正在嘗試使用Mongoid檢索所有主題。

我嘗試了各種查詢,但似乎無法理解。

例如,我不明白為什么這行不通?

Topic.where( name: "Algebra 101", 'subject.short_name' =>"Maths", 'subject.course.name' =>"Course1")

我可以這樣查詢嗎?

我的紅寶石代碼是

class Course
  embeds_many :subjects

class Subject
  embedded_in :course
  embeds_many :topics

class Topic
  embedded_in :subject

據我所知,只能對最頂層的模型(在這種情況下為Course )進行這樣的查詢; 我還沒有看到一種直接獲得這種嵌入式模型的方法。

所以這應該有效,但只會給您Course

Course.where(name: 'Course1', 'subjects.short_name' => 'Maths', 'subjects.topics.name' => "Algebra 101")

這是(不幸的是很丑陋的)查詢,應該可以為您提供所需的信息:

Course.where(name: 'Course1').subjects.where(short_name: 'Maths').topics.where(name: 'Algebra 101')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM