我有一个带有“城市”数组字段的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']
在这种情况下,我希望所有包含至少一个searchedCities的地图; map1和map2。
这不起作用,因为它会比较整个数组
Map.where(cities: searchedCities)
有什么想法吗?
答案 0 :(得分:0)
您可以使用.any_in
(找不到直接文档)为您生成一个$in mongodb查询,并且如果该字段包含给定数组中的任何值,则它与文档匹配。 / p>
在您的情况下:
Map.any_in(cities: searched_cities)
=> #<Mongoid::Criteria
selector: {"cities"=>{"$in"=>["London", "Paris"]}}
...
class: Map>