我在Mongoid上查询哈希字段,哈希字段的名称是keys
,哈希看起来像这样
{"location_id" => "id", "subscriber_id" => "id"}
现在我有一个位置ID数组,我想获取具有这些位置ID的所有记录,我已尝试将其与where
一起使用,但它不起作用
Variation.where({"keys.subscriber_id" => "id", "keys.location_id" => [location_ids]})
我也尝试了"keys.location_id".in => [location_ids]
,但它的抛出语法错误。请帮忙!
答案 0 :(得分:2)
in
和ne
等查询方法已添加到Symbol
,而不是String
。所以你可以说:
:'keys.location_id'.in => location_ids
其中location_ids
是一个数组。此外,查询方法只是构建较长的本机样式嵌套Hash查询的简短形式。例如,如果你说:
:field.op => value
对于某个运算符op
,然后Mongoid实际上将此(JavaScript)发送到MongoDB:
field: { $op: value }
因此,如果您不想写:'keys.location_id'.in
,那么您可以说:
'keys.location_id' => { :$in => location_ids }
# or
'keys.location_id' => { '$in' => location_ids }
代替。
另请注意,如果location_ids
是一个数组,那么[location_ids]
是一个数组数组,这不是您在查询中想要的数组,您只需要location_ids
如上所述。