0

Motorengine 是一个很棒的库,用于使用 mongodb 进行异步数据库操作。但我想知道如何使用电机引擎进行地理空间查询。由于该库不支持地理字段。我的选项是使用电机 2dspear 索引。但是,如果我在motorengine的帮助下找到一种方法,那就太好了。

谁能帮我解决这个问题。

4

1 回答 1

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)
于 2016-08-24T18:37:49.830 回答