Ruby on rails Mongoid:数组包含其他数组的任何值

Ruby on rails Mongoid:数组包含其他数组的任何值,ruby-on-rails,arrays,mongodb,mongoid,Ruby On Rails,Arrays,Mongodb,Mongoid,我有一个带有“cities”数组字段的Map对象 class Map include Mongoid::Document field :cities, type: Array end 我想搜索所有地图,其中至少有一个城市来自另一个数组。大概是这样的: # map1.cities = ['London', 'Manchester'] # map2.cities = ['Paris', 'Lyon'] # map3.cities = ['Berlin', 'Munich'] # searc

我有一个带有“cities”数组字段的
Map
对象

class Map
  include Mongoid::Document
  field :cities, type: Array
end
我想搜索所有
地图
,其中至少有一个城市来自另一个数组。大概是这样的:

# map1.cities = ['London', 'Manchester']
# map2.cities = ['Paris', 'Lyon']
# map3.cities = ['Berlin', 'Munich']
# searchedCities = ['London', 'Paris']
我希望所有地图至少包含一个搜索城市,在这种情况下;map1和map2

这不起作用,因为它会比较整个阵列

Map.where(cities: searchedCities)

有什么想法吗?

您可以使用
中的任何_(找不到直接文档)为您生成mongodb查询,如果字段包含给定数组中的任何值,则它与文档匹配

就你而言:

Map.any_in(cities: searched_cities)
 => #<Mongoid::Criteria
  selector: {"cities"=>{"$in"=>["London", "Paris"]}}
  ...
  class:    Map>
Map.any\u in(城市:搜索的城市)
=>{“$in”=>[“伦敦”、“巴黎”]}
...
类别:地图>

试试地图。任何(城市:搜索的城市)都很好。谢谢。我可能在文档中遗漏了这个问题。我将添加它作为未来访问者的答案。