是否可以在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"}
但只能选择与以下内容匹配的数据:
"County": "Kildare"是否存在与MongoDB中包含的函数相同或类似于SQL中的Mlab查询。如果里面有“奇尔代尔”,我就可以搜索县域了。
甚至在HTTP请求中,我也可以在q={ }中使用它。我试过使用q={"County":"/.*Kildare.*/"}
谢谢。
发布于 2018-03-01 20:20:24
q数据API中的mLab参数只是一个MongoDB查询文档。您可以像在MongoDB算子查询文档中一样使用任何MongoDB。
MongoDB没有$contains操作符。但是,如果要搜索字符串中的文本,则可以使用$regex或$text运算符。请参阅$regex和$text以了解更多信息。
若要使用$regex,请尝试将其作为q参数:
q={"County": {"$regex": "Kildare"}} 要使用$text,首先在县字段上构建一个文本索引。您可以在mLab管理门户(文件中的说明)上这样做,也可以在mongo上运行以下命令:
db.walks.createIndex({ County: "text" })然后,您可以将其作为q参数进行尝试:
q={"$text": {"$search": "Kildare"}}重要注意事项:、$regex和$text可能是非常低效率的操作。对您来说,重构数据模型可能更有效率,也更容易。与其在字符串中包含一个县列表,不如将它们放在如下的数组中:
"County": ["Kildare", "Laois", "Carlow"]然后,若要搜索县数组中包含基尔代尔的所有文档,只需使用以下查询:
q={"County": "Kildare"}这可能是一个比使用$regex或$text更好的选择。
https://stackoverflow.com/questions/49048625
复制相似问题