Mongodb查询匹配由空格分隔的单词

时间:2015-11-24 20:58:47

标签: java ajax mongodb servlets pattern-matching

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

2 个答案:

答案 0 :(得分:2)

您可以使用\b(字边界)代替^

dbObj.put("modelName",  Pattern.compile("\\b"+request.getParameter("startswith"),Pattern.CASE_INSENSITIVE));

这将允许您搜索不是start of the strings的单词,也不会匹配包含ama作为其一部分的字符串(例如:Obama未返回)

答案 1 :(得分:0)

仅使用搜索字符串作为模式,在这种情况下它将起作用。您创建的模式不起作用的原因是^表示字符串应该以以下模式开始。