Mongoid:数组包含另一个数组的任何值
Mongoid: array contains any values of another array
我有一个带有 'cities' 数组字段的 Map
对象
class Map
include Mongoid::Document
field :cities, type: Array
end
我想从另一个数组中搜索至少存在一个城市的所有 Map
。像这样:
# map1.cities = ['London', 'Manchester']
# map2.cities = ['Paris', 'Lyon']
# map3.cities = ['Berlin', 'Munich']
# searchedCities = ['London', 'Paris']
在本例中,我想要至少包含一个搜索城市的所有地图; map1 和 map2.
这不起作用,因为它比较整个数组
Map.where(cities: searchedCities)
有什么想法吗?
您可以使用 .any_in
(无法找到直接文档)为您生成 $in mongodb 查询,如果该字段包含任何来自给定数组的值。
你的情况:
Map.any_in(cities: searched_cities)
=> #<Mongoid::Criteria
selector: {"cities"=>{"$in"=>["London", "Paris"]}}
...
class: Map>
我有一个带有 'cities' 数组字段的 Map
对象
class Map
include Mongoid::Document
field :cities, type: Array
end
我想从另一个数组中搜索至少存在一个城市的所有 Map
。像这样:
# map1.cities = ['London', 'Manchester']
# map2.cities = ['Paris', 'Lyon']
# map3.cities = ['Berlin', 'Munich']
# searchedCities = ['London', 'Paris']
在本例中,我想要至少包含一个搜索城市的所有地图; map1 和 map2.
这不起作用,因为它比较整个数组
Map.where(cities: searchedCities)
有什么想法吗?
您可以使用 .any_in
(无法找到直接文档)为您生成 $in mongodb 查询,如果该字段包含任何来自给定数组的值。
你的情况:
Map.any_in(cities: searched_cities)
=> #<Mongoid::Criteria
selector: {"cities"=>{"$in"=>["London", "Paris"]}}
...
class: Map>