我刚开始使用MongoDB!正在试用这里支持的各种搜索功能.
我可以搜索一个文件,比如包含name = MongoDB,并带有以下选项(无论情况如何) - goDB,Mongo,go.努力在以下选项中搜索文档 - Mon*DB,*on*DB.也就是说,在同一搜索文本中有多个通配符.
任何指针将不胜感激!
你可以在Mongo中的字段上进行正则表达式匹配,这里是你如何做你的第一个模式:
Pattern p = Pattern.compile("Mon.*DB", CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject("name", p);
// finds all records with "name" matching /Mon.*DB/i
DBCursor cursor = collection.find(query);
Run Code Online (Sandbox Code Playgroud)
但要注意,许多正则表达式匹配需要全表扫描.这意味着如果针对大型集合运行它们,引擎将不得不遍历所有文档(可能是命中磁盘)并单独检查每个文档是否匹配.这比使用索引的查询要慢得多.
将命中索引的唯一正则表达式是区分大小写的前缀匹配.您可以像这样搜索所有"Mon*"并使用索引:
Pattern p = Pattern.compile("^Mon.*");
BasicDBObject query = new BasicDBObject("name", p);
// finds all records with "name" matching /^Mon.*/
DBCursor cursor = collection.find(query);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3649 次 |
| 最近记录: |