Mlab包含查询

问题描述 投票:1回答:1

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

"County": "Kildare, Laois, Carlow"

我可以查询数据集以返回所有trail = County Kildare:

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

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

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

"County": "Kildare"

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

或者甚至如何在HTTP请求中执行此操作,我也许可以在q={ }中使用它。香港专业教育学院尝试使用q={"County":"/.*Kildare.*/"}

谢谢。

android mongodb httprequest retrofit2 mlab
1个回答
2
投票

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

MongoDB没有$contains运算符。但是,如果您在字符串中搜索文本,则可以使用$regex$text运算符。请参阅documentation for $regexdocumentation 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"]

然后,要在其County数组中搜索包含Kildare的所有文档,您只需使用此查询:

q={"County": "Kildare"}

对于您而言,这可能比使用$regex$text更好。

© www.soinside.com 2019 - 2024. All rights reserved.