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>