Как сделать пользовательский запрос, используя django-nonrel и mongodb - PullRequest
7 голосов
/ 06 апреля 2011

Есть ли рекомендуемый способ сделать пользовательский запрос к mongodb с использованием django nonrel?

У меня весь сайт настроен и работает хорошо, сейчас я просто добавляю некоторые геопространственные индексы и запросы и хочуузнать, есть ли уже поддержка геопространственных запросов или есть ли лучший способ сделать это с помощью пользовательского запроса?

1 Ответ

10 голосов
/ 06 апреля 2011

Я нашел один ответ на этот вопрос, позвольте мне сейчас, если есть лучший.

Как указано здесь, присвойте свои объекты MongoDBManager - http://django -mongodb-engine.github.com / mongodb-engine / cool-stuff.html # includes-mongodb-battery

from django_mongodb_engine.contrib import MongoDBManager

class MyModel(models.Model):
    objects = MongoDBManager()

Затем вы можете выполнять необработанные запросы, например так:

MyModel.objects.raw_query({'loc' : {'$near' : [50,50]}})

Другой подход, я думаю, состоит в том, чтобы перейти непосредственно к пимонго: http://api.mongodb.org/python/1.10%2B/examples/geo.html

Наконец я закончил с этим запросом:

nearest = MyModel.objects.raw_query(
    {'loc' : {
         '$within' :{ #within .05 degrees of lat/lon
                    '$center' : [{'long' : long,'lat' : lat}, .05]
                    }
      })[:10] #get up to 10 results
...