我正在构建一个MongoDB
Java查询,并且在尝试在我的数据库中查找特定值时,由于我{中的一些不需要的'\'
个字符,查询得到的查询全部搞砸了。 {1}}。
这就是我正在做的事情。
我从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"
有人可以帮忙吗?
答案 0 :(得分: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);
}
}