'SQL'就像'mongodb中的'声明

时间:2012-05-29 05:30:51

标签: mongodb mongoose

是否存在MongoDB / mongoose'like'语句,例如SQL语言? 使用的唯一原因是全文搜索的实现。

5 个答案:

答案 0 :(得分:7)

MongoDB支持RegularExpressions

答案 1 :(得分:2)

我们可以使用java API为mongodb实现正则表达式的两种方法:

表达式1: 我需要在文档字段

中搜索该字符串
String strpattern ="your regular expression";
Pattern p = Pattern.compile(strpattern);

BasicDBObject obj = new BasicDBObject() 
obj.put("key",p);

示例:(考虑我想搜索名称以'a'开头的地方)

String strpattern ="^a";
Pattern p = Pattern.compile(strpattern);

BasicDBObject obj = new BasicDBObject() 
obj.put("name",p);

表达式2:

我需要在一个字段中搜索多个单词,您可以按如下方式使用

String pattern = "\\b(one|how many)\\b";

BasicDBObject obj = new BasicDBObject();

//if you want to check case sensitive

obj.put("message", Pattern.compile(pattern,Pattern.CASE_INSENSITIVE));

答案 2 :(得分:2)

虽然您可以使用正则表达式,但在全文搜索中无法获得良好的性能,因为包含查询(例如/ text / )无法使用索引。

例如/ ^ text /的开头查询可以使用索引。

如果您正在考虑大规模的全文搜索,请考虑MongoDB的Multi Key Search功能。

<强>更新

从MongoDB v3.2开始,您还可以使用text index

答案 3 :(得分:0)

考虑在应用程序级别创建一个脚本,将您的数据转换为标记(单词)。然后将标记视为标记,在这些标记上构建索引,然后搜索标记,例如搜索标记。这就像创建倒排索引。

为了更好地搜索文本,可以考虑使用Lucene而不是MongoDB。

答案 4 :(得分:0)

使用正则表达式:/ ^ textforesarc $ / i。只是别忘了告别性能:)。 使用like模拟正则表达式搜索不会命中自定义索​​引。现在只支持启动。