Mlab 包含查询

Mlab Contains Query

是否可以在 mLab 中使用 like/contains 查询? 我在服务器 https://mlab.com/:

上有这样的 json 数据

"County": "Kildare, Laois, Carlow"

我可以查询数据集 return all where trails = County Kildare:

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

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

但只有 select 符合以下条件的数据:

"County": "Kildare"

是否有与MongoDB中的Contains或SQL中的Like具有相同功能的Mlab查询。所以我可以搜索包含 "Kildare".

的县字段

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

谢谢。

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

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

要使用 $regex,试试这个作为 q 参数:

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

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

上执行此命令
db.walks.createIndex({ County: "text" })

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

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

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

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

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

q={"County": "Kildare"}

与使用 $regex$text 相比,这对您来说可能是更好的选择。