2011-11-14 17 views
7

私はMongoDBでうまく動作する基本的な地理空間クエリを持っています。それは補完を得るために$を適用するのは簡単ではないようだが...それは私のために働いていない。それは単純なユーザーエラーですか?あるいは、MongoDBは概念的にこのクエリを処理できないでしょうか?私はdocumentationでそのような制限を見つけることができませんでした。

db.customers.find({ "location" : { $not : { $within : { $center : [[-117.15,32.72],0.15] } } } }) 
error: { 
    "$err" : "missing geo field (location) in : {location: { $not: { $within: { $center: [ [ -117.15, 32.72 ], 0.15 ] } } } }", 
    "code" : 13042 
} 

db.customers.find({ "location" : { $within : { $center : [[-117.15,32.72],0.15] } } }) 

未遂補完クエリ(所望の結果は10マイル以内ではありません1つの都市である):

ワーキング問い合わせは(正確に中央の10マイル以内に2つの都市を見つけました)エラーを参照するには、クエリをコピー/ペーストしたい人のため

は、ここでのサンプルデータのほんの少しです:

db.customers.ensureIndex({ "location" : "2d" }) 
db.customers.save({"city":"La Mesa","state":"CA","location":[ -117.02,32.76 ]}) 
db.customers.save({"city":"Chula Vista","state":"CA","location":[ -117.08,32.63 ]}) 
db.customers.save({"city":"Mexico City","state":"Mexico","location":[-99.133244,19.4326]}) 

(問題の場合はMongoDB 1.8.2を使用しています)

+2

これは厳しいものです... mongodb-user googleグループのメッセージもお勧めします... – PierrOz

+0

ええ、私もそれをお勧めしたいと思います..いい質問... – RameshVel

+0

このような質問は不可能ですが、これは既知の拡張要求です。今後の参考として、MongoDB Google Groupのこれらのスレッドがこの問題について話し合っています。 [ジオ$を使用してクエリと] [1] [ジオクエリ] [2] [1]:http://groups.google.com/group/mongodb-user/browse_thread/thread/4417b0f9f0b3de12 [2 ]:http://groups.google.com/group/mongodb-user/browse_thread/thread/65a7fd77a2ee4306 ヘルプ!これらのリンクをどのようにフォーマットするかわかりません。 – mdahlman

答えて

5

私はこれはできないと思います。私の知る限り、ロケーションクエリはパラメータとして位置クエリを使用できる特別なカーソルを与えます($withinなど)。 。 error: { "$err" : "geo field only has 1 element", "code" : 13068 }

インデックスの問題は、一般的に、否定はEVILである、ということである:

V 2.0.1

はもっと説明エラーメッセージを表示します。ほとんどの索引は、それらを回すときにうまく対処しないため、照会が機能したとしても、おそらくテーブル・スキャンを行う必要があるため、おそらく望ましくありません。

私はこれについて完全にはわかりません。ニュースグループへのメッセージは、おそらく良い考えです。

+3

はい、ニュースグループへの投稿が助けになりました。他の人も同様の要求をしている$ orおよび$ allのサポートは、おそらくより有用です(EVILより少ない)が、どちらもサポートされていません。改善はここで要求されます:https://jira.mongodb.org/browse/SERVER-3984 – mdahlman

+0

私はmongodbが予定されているのを好きです:2012年12月31日UTC – user956584

+0

これはまだできませんか?私はmongodb 2.6.4を使用しています... –