【问题标题】:Mlab Contains QueryMlab 包含查询
【发布时间】:2026-01-21 08:50:02
【问题描述】:

是否可以在 mLab 中使用 like/contains 查询? 我在服务器https://mlab.com/上有这样的json数据:

"County": "Kildare, Laois, Carlow"

我可以查询数据集以返回所有 where trails = 基尔代尔郡:

@GET("databases/walks/collections/walks") Call<List<Trail>> byCounty (@Query("q") String county,@Query("apiKey") String apiKey);

参数“q”包含:q={"County": "Kildare"}

但只选择符合以下条件的数据:

"County": "Kildare"

是否存在与 MongoDB 中的 Contains 或 SQL 中的 Like 具有相同功能的 Mlab 查询。所以如果它包含“Kildare”,我可以搜索县域。

或者甚至如何在 HTTP 请求中执行此操作,我也许可以在 q={ } 中使用它。 我试过使用q={"County":"/.*Kildare.*/"}

谢谢。

【问题讨论】:

  • Is there a retrofit query that has the same function as Contains in MongoDB or Like in SQL - 改造不是数据库
  • 改造对服务器提供数据的能力没有影响..
  • 感谢更改了问题标题

标签: android mongodb httprequest retrofit2 mlab


【解决方案1】:

mLab 数据 API 中的q 参数只是一个 MongoDB 查询文档。您可以像通常在 MongoDB 查询文档中一样使用任何 MongoDB operator

MongoDB 没有 $contains 运算符。但是,如果您要在字符串中搜索文本,则可以使用 $regex$text 运算符。请参阅documentation for $regexdocumentation for $text 了解更多信息。

要使用$regex,请尝试将此作为q 参数:

q={"County": {"$regex": "Kildare"}} 

要使用$text,首先在Country 字段上建立一个文本索引。您可以在 mLab 管理门户 (instructions in the documentation) 上执行此操作,或在 mongo shell 上运行此命令:

db.walks.createIndex({ County: "text" })

然后您可以尝试将其作为q 参数:

q={"$text": {"$search": "Kildare"}}

重要提示: $regex$text 可能是极其低效的操作。重组数据模型可能更高效、更容易。与其将县列表放在一个字符串中,不如将它们放在一个数组中,如下所示:

"County": ["Kildare", "Laois", "Carlow"]

然后要搜索其 County 数组中包含 Kildare 的所有文档,您可以简单地使用以下查询:

q={"County": "Kildare"}

这可能是比使用$regex$text 更好的选择。

【讨论】: