首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mlab包含查询

Mlab包含查询
EN

Stack Overflow用户
提问于 2018-03-01 11:22:10
回答 1查看 1.2K关注 0票数 1

是否可以在mLab中使用“相似/包含”查询?我在服务器https://mlab.com/上有类似于json的数据

"County": "Kildare, Laois, Carlow"

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

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

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

但只能选择与以下内容匹配的数据:

代码语言:javascript
运行
复制
"County": "Kildare"

是否存在与MongoDB中包含的函数相同或类似于SQL中的Mlab查询。如果里面有“奇尔代尔”,我就可以搜索县域了。

甚至在HTTP请求中,我也可以在q={ }中使用它。我试过使用q={"County":"/.*Kildare.*/"}

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 20:20:24

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

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

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

代码语言:javascript
运行
复制
q={"County": {"$regex": "Kildare"}} 

要使用$text,首先在县字段上构建一个文本索引。您可以在mLab管理门户(文件中的说明)上这样做,也可以在mongo上运行以下命令:

代码语言:javascript
运行
复制
db.walks.createIndex({ County: "text" })

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

代码语言:javascript
运行
复制
q={"$text": {"$search": "Kildare"}}

重要注意事项:$regex$text可能是非常低效率的操作。对您来说,重构数据模型可能更有效率,也更容易。与其在字符串中包含一个县列表,不如将它们放在如下的数组中:

代码语言:javascript
运行
复制
"County": ["Kildare", "Laois", "Carlow"]

然后,若要搜索县数组中包含基尔代尔的所有文档,只需使用以下查询:

代码语言:javascript
运行
复制
q={"County": "Kildare"}

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49048625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档