我正在用Rails 3和MongoDB(mongoid适配器)构建一个应用程序。我很难在子记录中找到具有特定条件的父记录。
class Food
include Mongoid::Document
has_many :subscriptions, as: :subscribable
end
class Subscription
include Mongoid::Document
field :subscriber_id
belongs_to :subscribable, polymorphic: true
belongs_to :subscriber
end
我想选择特定用户尚未订阅的食品。
这是我的查询,但不起作用。
Food.not_in('subscriptions.subscriber_id' => [User.first.id])
但它会退回所有的食物。我的查询出了什么问题?
感谢您的帮助。
感谢
这样的查询在Mongoid中不起作用。下面的查询需要连接两个集合,但是MongoDB没有连接的概念。因此,当您进行查询时,您只能使用正在查询的集合中文档的字段——在这种情况下,它很可能是foods
集合。
如果你不想根据订阅查询食物,我建议你在食物中嵌入Subscription
。如本文所述。