2011-04-06 1 views
7

Existe-t-il une méthode recommandée pour faire une requête personnalisée à mongodb en utilisant django nonrel? J'ai tout un site bien installé, je suis en train d'ajouter quelques index et requêtes géospatiales, et je voulais savoir si les requêtes géospatiales étaient déjà supportées ou s'il y avait un meilleur moyen de le faire en utilisant une requête personnalisée?Comment faire une requête personnalisée en utilisant django-nonrel et mongodb

Répondre

10

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

Comme documenté ici assigner 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 premières comme ceci:

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

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

Enfin, 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 
+1

ok, marquant ma propre réponse puisqu'il n'y en a pas d'autres –

Questions connexes