我有一个模型Tag
,它可能属于其他几个模型,但目前只有一个模型Todo
依次属于User
:
class User
include Mongoid::Document
field: name, type: String
has_many :todos
end
class Todo
include Mongoid::Document
field: name, type: String
belongs_to :user
end
class Tag
include Mongoid::Document
field: name, type: String
belongs_to :todos
end
如何查询属于特定用户的所有Tags
?我写了以下内容:
todo_ids = Todo.where(user_id: '86876876787')
然后:
tags = Tag.where('todo_id.in': todo_ids)
但那些没有用。我错过了什么?
答案 0 :(得分:1)
你错过了两件事:
todo_ids
查询中的Tag
。'todo_id.in'
是一个字段路径,它试图查看in
哈希中的todo_id
字段,这不是对MongoDB {{1}的使用}} operator。您一次只能处理一个集合,以便修复第一个集合,您需要从MongoDB中提取一系列ID:
$in
要修复第二个,请使用todo_ids = Todo.where(user_id: '86876876787').pluck(:id)
# -------------------------------------------^^^^^^^^^^^
运算符:
$in