如何使用django-nonrel和mongodb进行自定义查询

Tom*_*ner 7 geospatial mongodb django-nonrel

是否有推荐的方法使用django nonrel对mongodb进行自定义查询?

我有一个完整的网站设置并运行良好,现在我只是添加了一些地理空间索引和查询,并想知道地理空间查询是否已经支持或者是否有最佳实践方法来使用自定义制作查询?

Tom*_*ner 10

我找到了这个问题的一个答案,如果有更好的问题我现在就告诉我.

如此处所述,将您的对象分配给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()
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做原始查询:

MyModel.objects.raw_query({'loc' : {'$near' : [50,50]}})
Run Code Online (Sandbox Code Playgroud)

我猜不同的方法是直接去pymongo: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
Run Code Online (Sandbox Code Playgroud)