MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como fazer uma consulta personalizada usando django-nonrel e mongodb


Eu encontrei uma resposta para esta pergunta, deixe-me agora se houver uma melhor.

Conforme documentado aqui, atribua seus objetos ao MongoDBManager - http://django-mongodb-engine.github.com/mongodb-engine/cool-stuff.html#included-mongodb-batteries
from django_mongodb_engine.contrib import MongoDBManager

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

Então você pode fazer consultas brutas como esta:
MyModel.objects.raw_query({'loc' : {'$near' : [50,50]}})

Uma abordagem diferente, eu acho, seria ir diretamente para pymongo:http://api.mongodb.org/python/1.10%2B/examples/geo.html

Finalmente acabei com esta consulta:
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