MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Est-ce que quelqu'un connaît un exemple fonctionnel d'index 2dsphere dans pymongo?

La 2dsphere Le type d'index (pymongo.GEOSPHERE) ne fonctionne que dans MongoDB 2.4 et versions ultérieures. Vous allez également vouloir utiliser GeoJSON format pour vos points. Enfin, les opérateurs de requête géographique de MongoDB sont sensibles à l'ordre, vous devrez donc utiliser SON lors de l'utilisation d'options telles que $maxDistance. Voici un exemple utilisant $near :

>>> c = pymongo.MongoClient()
>>> points = c.dbtest.points
>>> points.ensure_index([("loc", pymongo.GEOSPHERE)])
u'loc_2dsphere'
>>> points.insert({'loc': {'type': 'Point', 'coordinates': [40, 5]}})
ObjectId('51b0e508fba522160ce84c3a')
>>> for doc in points.find({"loc" : SON([("$near", { "$geometry" : SON([("type", "Point"), ("coordinates", [40, 5])])}), ("$maxDistance", 10)])}):
...     doc
... 
{u'loc': {u'type': u'Point', u'coordinates': [40, 5]}, u'_id': ObjectId('51b0e508fba522160ce84c3a')}