簡體   English   中英

地理空間數據和多個查詢的數據模型

[英]Data model for geo spatial data and multiple queries

我有一些mongodb對象,我們稱其為包含地理信息的place ,請看示例:

{
   "_id": "234235425e3g33424".
   "geo": {
             "lon": 12.23456,
             "lat": 34.23322
          }
   "some_field": "value"
}

在每個place ,功能列表都與以下內容相關聯:

{
  "_id": "2334sgfgsr435d",
  "place_id": "234235425e3g33424",
  "feature_field" : "some_value"
}

如您所見,由於place_id字段, place_id已鏈接到地點。 現在,我想查找:與最近的places有關的features列表。 但我也想在place.some_fieldfeature.feature_field上添加搜索條件。 我想限制結果的重要之處。

現在我正在使用這種方法:

  1. 我查詢有條件的places geosome_filed
  2. 我的查詢features與條件feature_fieldplace_id (只限制在1中發現的)
  3. 我將結果限制在我的應用程序代碼中

我的問題是:是否有更好的方法來執行此任務? 現在,我無法使用mongo limit()函數,因為在places執行此操作時,由於需要進行第二次查詢,結果可能太少。 我不能對第二個查詢進行limit() ,因為結果將以隨機順序出現,我想按距離對它進行排序。

我知道我可以將數據放入一個文檔中,但是我認為features列表將很長,並且可以超過BSON大小限制。

僅用完16mb的功能似乎不太可能...但是有可能。 我認為您沒有意識到16mb的大小,因此在做任何事情之前先進行數學運算!

無論如何,對於MongoDB,您無法使用兩個集合中的字段進行查詢。 查詢始終只處理一個特定的集合。 我所做的事情與您在此處所做的事情非常相似,我已經在一篇文章中進行了介紹: http : //derickrethans.nl/indexing-free-tags.html-對此有所啟發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM