0

空間インデックスを使用してドキュメントをクエリしようとしています。

ドキュメントによると、私のモデルは次のようになります。

class Trip
  include Mongoid::Document
  field :addresses, :type => Array
  index({"addresses.loc" => "2d"}, {:min => -180, :max => 180})
end

Addessesはこのように保存されます

Trip.first.addresses
=> [{"context"=>"from", "loc"=>[-71.55234, -33.024527]}, {"context"=>"to", "loc"=>[-70.641997, -33.4691199]}]

このクエリを使用して、address.locとaddress.contextに一致するドキュメントをクエリしたいと思います。

Trip.where("addresses.loc" => {"$nearSphere" => [-70.641997, -33.4691199], "$maxDistance" => 0.005052092295133236}).where("addresses.context" => "to")

クエリは適切な値を返しますが、「address.context」を無視しているようです。私はそれを適切な方法でやっていますか?

ありがとう !

4

1 に答える 1

0

式に一致する配列を持つドキュメントを見つけるには、#elem_match を使用する必要があります。

Trip.elem_match(addresses: {context: 'to', _rest_of_your_geospatial_stuff_ })

ここでもっと読む:

http://mongoid.org/en/origin/docs/selection.html

于 2013-01-31T16:06:28.347 に答える