我正在使用ajax,servlet和mongodb实现自动完成功能。现在,我已经实现了似乎在部分起作用的逻辑
例:
在数据库中,如果我有以下产品
1. Xbox Amazon
2. Amazon xyz
当用户输入
ama
时,结果应包含两个产品。但是我只得到Amazon xyz
。这是我用Java编写的逻辑,
DBCollection products = db.getCollection("Products");
BasicDBObject dbObj = new BasicDBObject();
dbObj.put("modelName", Pattern.compile("^"+request.getParameter("startswith"),Pattern.CASE_INSENSITIVE));
DBCursor cursor = products.find(dbObj);
最佳答案
您可以为案例使用\b
(单词边界)代替^
。
dbObj.put("modelName", Pattern.compile("\\b"+request.getParameter("startswith"),Pattern.CASE_INSENSITIVE));
这将允许您搜索不是
start of the strings
的单词,并且也与包含ama
作为一部分的字符串不匹配(例如:不返回Obama
)关于java - Mongodb查询以匹配用空格分隔的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33903676/