1

PyMongoのステートメントを使用して、コレクションに地理空間インデックスを作成しました。

self.geo_collection.create_index([('location',pymongo.GEO2D)],\
         min=0,max=700,name='test_name')

しかし、私が次のクエリを実行しようとすると:

{'_id': ObjectId('4fa739422d38036937000000'), 'location': {'$within': {'$polygon': [[165, 10], [165, 90], [290, 10], [290, 90]]}}}

私はいつも

database error: point not in interval of [ -180, 180 )

誰かが私が何が起こっているのか理解するのを手伝ってもらえますか?ありがとう。

4

1 に答える 1

1

地理空間インデックスは、宣伝どおりに機能します。$ polygonを使用するには、mongodbバージョン1.9以降が必要です。次のスクリプトをmongodb2.0.4で問題なく実行しました

import pymongo

db = pymongo.Connection().foo
db.foo.create_index([("loc","2d")], min=0, max=700, safe=True)
db.foo.insert({"loc":(180, 50)}, safe=True)
db.foo.insert({"loc":(240, 490)}, safe=True)
db.foo.insert({"loc":(240, 530)}, safe=True)
polygonA = [ [ 165, 10 ], [ 165, 90 ], [ 290, 10 ], [ 290, 90 ] ]
for doc in db.foo.find({"loc":{"$within":{'$polygon':polygonA}}}):
    print doc

次の結果になります

{u'loc': [180, 50], u'_id': ObjectId('4fa7b47c81dde04973000000')}
于 2012-05-07T11:46:11.713 に答える