如何在motorengine中创建一个具有geopoint属性的Document类

时间:2016-08-23 02:44:57

标签: mongodb motorengine

Motorengine是一个很棒的库,用于使用mongodb进行异步数据库操作。但我想知道如何使用motorengine进行地理空间查询。 由于图书馆不支持地理字段。选项i使用的是电机2dspear指数。但如果我在motorengine的帮助下找到方法,那将是非常好的。

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

from motorengine.document import Document
import pymongo


class BaseDocument(Document):
      import pymongo

      ASCENDING = pymongo.ASCENDING
      DESCENDING = pymongo.DESCENDING
      GEO2D = pymongo.GEOSPHERE

      def __init__(self, alias=None, **kwargs):
            indexes = self.__indexes__ if hasattr(self, "__indexes__") else []
            if len(indexes) == 0:
               return

            def ensure_index(index, **spec):
               self.objects.coll(alias).ensure_index(index, **spec)

            for index_spec in indexes:
               ensure_index([index_spec])

            super(BaseDocument, self).__init__(**kwargs)

和使用它的索引。

class Team(BaseDocument):

     __indexes__ = [('location', BaseDocument.GEO2D)]

     name = StringField(required=True)
     location = GeoPointField()
     contact = StringField(required=True)