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

Comment faire une requête personnalisée en utilisant django-nonrel et mongodb

J'ai trouvé une réponse à cette question, laissez-moi maintenant s'il y en a une meilleure.

Comme documenté ici, affectez vos objets au 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()

Ensuite, vous pouvez faire des requêtes brutes comme ceci :

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

Une approche différente, je suppose, serait d'aller directement à pymongo :http ://api.mongodb.org/python/1.10%2B/examples/geo.html

Finalement, je me suis retrouvé avec cette requête :

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