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

发布于 2024-10-31 09:13:49 字数 137 浏览 1 评论 0原文

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

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

Is there a recommended way to make a custom query to mongodb using django nonrel?

I have an entire site set up and running well, now I am just adding in some geospatial indexing and queries, and wanted to know if for geospatial queries there is already support or if there is a best practice way to do it using a custom made query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

明媚如初 2024-11-07 09:13:49

我找到了这个问题的答案,如果有更好的答案,请告诉我。

如此处所述,将对象分配给 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()

然后你可以像这样进行原始查询:

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

我想另一种方法是直接进入 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

I found one answer to this question, let me now if there is a better one.

As documented here assign your objects to the 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()

Then you can do raw queries like this:

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

A different approach I guess would be to go directly to pymongo:
http://api.mongodb.org/python/1.10%2B/examples/geo.html

Finally I ended up with this query:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文