我有一些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_field
和feature.feature_field
上添加搜索协议。而且我想限制结果的重要性。
现在我正在使用这种方法:
places
和geo
some_filed
features
和feature_field
上的条件place_id
查询(仅限于1中找到的条件。)我的问题是:有更好的办法来完成这项任务吗?现在我不能使用mongo limit()
函数,因为当我在places
上执行时,我的结果太少,因为我需要进行第二次查询。我不能limit()
第二次查询,因为结果会产生随机顺序,我想按距离排序。
我知道我可以将数据放入一个文档,但我认为features
的列表会很长,而且我可以超过BSON大小限制。
答案 0 :(得分:0)
仅仅为这些功能耗尽16mb似乎不太可能......但这是可能的。我认为你没有意识到16mb是多少,所以在做任何事情之前做数学也是如此!
在任何情况下,使用MongoDB,您都可以不使用来自两个集合的字段进行查询。查询始终仅处理一个特定集合。我做了一件非常类似于你在这里的事情,我在一篇文章中对此进行了描述:http://derickrethans.nl/indexing-free-tags.html - 看看它有更多灵感。