地理空间数据和多个查询的数据模型

时间:2013-01-31 12:41:51

标签: mongodb

我有一些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字段链接到地点。现在我想找到:与最近features相关联的places列表。但我还想在place.some_fieldfeature.feature_field上添加搜索协议。而且我想限制结果的重要性。

现在我正在使用这种方法:

  1. 我在placesgeo
  2. 上查询条件some_filed
  3. 我使用featuresfeature_field上的条件place_id查询(仅限于1中找到的条件。)
  4. 我在应用程序代码中限制了结果
  5. 我的问题是:有更好的办法来完成这项任务吗?现在我不能使用mongo limit()函数,因为当我在places上执行时,我的结果太少,因为我需要进行第二次查询。我不能limit()第二次查询,因为结果会产生随机顺序,我想按距离排序。

    我知道我可以将数据放入一个文档,但我认为features的列表会很长,而且我可以超过BSON大小限制。

1 个答案:

答案 0 :(得分:0)

仅仅为这些功能耗尽16mb似乎不太可能......但这是可能的。我认为你没有意识到16mb是多少,所以在做任何事情之前做数学也是如此!

在任何情况下,使用MongoDB,您都可以使用来自两个集合的字段进行查询。查询始终仅处理一个特定集合。我做了一件非常类似于你在这里的事情,我在一篇文章中对此进行了描述:http://derickrethans.nl/indexing-free-tags.html - 看看它有更多灵感。