我正在使用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/

10-11 03:58