如何用Mongoid查询嵌套文档中的信息?

2026-04-11 16:431阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计394个文字,预计阅读时间需要2分钟。

如何用Mongoid查询嵌套文档中的信息?

我有一个名为Equipment的Mongoid文档,它可以嵌入多个问题文档。以下是其结构:

rubyclass Equipment include Mongoid::Document include Mongoid::Timestamps

field :description field :modelNumber field :title field :category

我有一个名为Equipment的Mongoid文档,它可以嵌入多个问题文档.以下是文档架构:

class Equipment include Mongoid::Document include Mongoid::Timestamps field :description field :modelNumber field :title field :categoryId field :subCategoryId field :stateId field :city field :askingPrice embeds_many :questions end class Question include Mongoid::Document field :content attr_accessible :content embedded_in :equipment, :inverse_of => :questions embeds_one :answers end

我的问题是我可以根据问题ID检索问题文档.但是,我当前的查询返回父设备文档.我原以为查询会返回嵌入的问题文档.我最终可以获得嵌入式问题文档,但我必须遍历父设备文档的所有问题文档.

这是我目前的查询:

@question = Equipment.where('questions._id' => Moped::BSON::ObjectId(params[:id])).first

有没有办法直接获取嵌入的问题文档?

因为您使用的是嵌入式文档,所以抓住单个问题可能没有意义.但是,它确实在父文档的上下文中有意义.如果你真的只想要一个特定的问题,你可以使用普通的ARish语法:

如何用Mongoid查询嵌套文档中的信息?

question = Question.find(params[:id])

我强烈建议你确保在question._id字段上有索引.这有助于确保此查询是快速读取操作.否则,Mongo将需要遍历所有Equipment文档并检查每个嵌入的Question对象.

如果上述方法不起作用,您可以尝试嵌套关系:

Equipment.find(params[:equipment_id]).questions.find(params[:id])

标签:文档

本文共计394个文字,预计阅读时间需要2分钟。

如何用Mongoid查询嵌套文档中的信息?

我有一个名为Equipment的Mongoid文档,它可以嵌入多个问题文档。以下是其结构:

rubyclass Equipment include Mongoid::Document include Mongoid::Timestamps

field :description field :modelNumber field :title field :category

我有一个名为Equipment的Mongoid文档,它可以嵌入多个问题文档.以下是文档架构:

class Equipment include Mongoid::Document include Mongoid::Timestamps field :description field :modelNumber field :title field :categoryId field :subCategoryId field :stateId field :city field :askingPrice embeds_many :questions end class Question include Mongoid::Document field :content attr_accessible :content embedded_in :equipment, :inverse_of => :questions embeds_one :answers end

我的问题是我可以根据问题ID检索问题文档.但是,我当前的查询返回父设备文档.我原以为查询会返回嵌入的问题文档.我最终可以获得嵌入式问题文档,但我必须遍历父设备文档的所有问题文档.

这是我目前的查询:

@question = Equipment.where('questions._id' => Moped::BSON::ObjectId(params[:id])).first

有没有办法直接获取嵌入的问题文档?

因为您使用的是嵌入式文档,所以抓住单个问题可能没有意义.但是,它确实在父文档的上下文中有意义.如果你真的只想要一个特定的问题,你可以使用普通的ARish语法:

如何用Mongoid查询嵌套文档中的信息?

question = Question.find(params[:id])

我强烈建议你确保在question._id字段上有索引.这有助于确保此查询是快速读取操作.否则,Mongo将需要遍历所有Equipment文档并检查每个嵌入的Question对象.

如果上述方法不起作用,您可以尝试嵌套关系:

Equipment.find(params[:equipment_id]).questions.find(params[:id])

标签:文档