0

我有一些 mongodb 对象,我们称它为place包含地理信息的对象,请看示例:

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

对于 every place,功能列表与以下内容相关联:

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

如您所见,由于place_id字段,功能与地点相关联。现在我想找到:features与最近连接的列表places。但我还想在place.some_fieldand上添加搜索条件feature.feature_field。重要的是我想限制结果。

现在我正在使用这样的方法:

  1. 我查询places条件为geosome_filed
  2. 我查询features条件 onfeature_fieldplace_id(仅限于 1 中的条件。)
  3. 我在我的应用程序代码中限制了结果

我的问题是:有没有更好的方法来完成这项任务?现在我不能使用 mongolimit()函数,因为当我这样做时,places我可能会以太少的结果结束,因为我需要进行第二次查询。我不能limit()进行第二次查询,因为结果会出现随机顺序,我想按距离对其进行排序。

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

4

1 回答 1

0

仅功能就用完 16mb 似乎不太可能……但这是可能的。我认为您没有意识到 16mb 是多少,所以在做任何假设之前先进行数学计算!

在任何情况下,使用 MongoDB,您都无法使用来自两个集合的字段进行查询。查询总是只处理一个特定的集合。不过,我已经完成了与您在此处所做的非常相似的事情,我在一篇文章中对此进行了描述:http: //derickrethans.nl/indexing-free-tags.html — 看看它以获得更多灵感。

于 2013-01-31T14:27:55.850 回答