Ruby on rails Mongoid:数组包含其他数组的任何值
我有一个带有“cities”数组字段的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
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”=>[“伦敦”、“巴黎”]}
...
类别:地图>
试试地图。任何(城市:搜索的城市)都很好。谢谢。我可能在文档中遗漏了这个问题。我将添加它作为未来访问者的答案。