0

我正在构建一个MongoDBJava 查询,在尝试在我的数据库中查找特定值时,由于'\'我的String. 这就是我正在做的事情。

我从我的 中获取字符串列表mongodb,然后使用这些字符串在另一个集合中执行查找。

DBCursor = null;
for(String s : list){
 BasicDBOject query = = new BasicDBObject("actor.preferredUsername",  s);
 cursor = coll.find(query);
 //treat the results
 }

如果我System.out.println()使用查询,这就是我得到的:

 { "actor.preferredUsername" : "\"NapoleSunset75\""}

注意'\'最后一个字段中的 。

现在,出于测试目的,如果我更改's'为固定的字符串,如"xpto",则成功创建查询,返回

 { "actor.preferredUsername" : "xpto"}

任何人都可以帮忙吗?

4

1 回答 1

0

我认为,这是由于要存储在数据库中的字符串中的额外引号引起的。如果是这样,您可以使用此类,它是静态公共方法来验证您的 String 在存储到数据库之前:

public class SqlValidator {

private static final String SINGLE_QUOTE    = "\u0027";

    /**
     * It replaces all ' with ''. It should be used in read/write queries.
     * 
     * @param str
     */
    public static String quoteInQuery(String str) {
    if (str == null)
        return null;
    return str.replaceAll(SINGLE_QUOTE, SINGLE_QUOTE + SINGLE_QUOTE);
    }
}
于 2013-08-16T08:43:38.003 回答