MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So erstellen Sie eine benutzerdefinierte Abfrage mit django-nonrel und mongodb

Ich habe eine Antwort auf diese Frage gefunden, lassen Sie mich jetzt wissen, ob es eine bessere gibt.

Wie hier dokumentiert weisen Sie Ihre Objekte dem MongoDBManager zu - 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()

Dann können Sie Rohabfragen wie folgt durchführen:

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

Ein anderer Ansatz wäre, denke ich, direkt zu pymongo zu gehen:http://api.mongodb.org/python/1.10%2B/examples/geo.html

Schließlich landete ich bei dieser Abfrage:

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