首页 > 解决方案 > 如何同时使用 MongoDB 的 $text 和 $nearSphere 搜索运算符?

问题描述

我有一些带有一些字符串字段和一些嵌入式 GeoJSON 点的文档,如下所示:

{
   title: "",
   description: "",
   geometry: {
      type: "Point",
      coordinates: [0,0]
   }
}

因此,根据文档,MongoDB 的全文运算符和地理搜索运算符不能在同一个查询中使用。

这对我来说很有意义,因为他们都试图以不同的方式对相同的结果进行排序,所以有什么好的替代方法:

换句话说,我想简单地使用全文搜索算法来过滤而不是排序,而地理搜索操作则相反。原则上这似乎是合理的,当然许多位置感知应用程序都允许您这样做(例如 rightmove、deliveroo、airbnb 等),那么最好的方法是什么?

我认为我可以通过在多个字段中使用和正则表达式值来做一些可以接受的好事,但我怀疑结果是否会像使用本机搜索算法一样好或一样快。$or

聚合似乎对此没有帮助,尽管我开始阅读有关 map-reduce 的内容,这似乎可以提供一个可能的解决方案。

标签: mongodbsearchgeojson

解决方案


您可以...吗:

  • $match使用文本索引
  • 使用$let手动计算距离
  • 按计算距离排序

?


推荐阅读