MongoDB的查询构造吃生的查询字符串的Java
问题描述:
我试图想出一个概念,以一个查询字符串,并将它通过查询对象传递到这样的事情:MongoDB的查询构造吃生的查询字符串的Java
returnList = mongoTemplateTracking.find(query,TrackingData.class, COLLECTION_NAME);
我一直看着这两个查询和标准类的构造函数,看看他们是否可以采取原始字符串如:
"ID" : "32399a"
而是建立在标准通过Criteria.where对象的()是()等。
我见过的方法
protected <T> List<T> doFind(String collectionName,
com.mongodb.DBObject query,
com.mongodb.DBObject fields,
Class<T> entityClass)
但是由于我的自动绑定到mongoTemplateTracking
我的课我无法访问此方法。
答
MongoDB查询语言(“MQL”)很容易用JSON格式表示。所以,如果你有一个字符串表达式,如:
String s = "{\"$or\": [ {\"name\": \"buzz\"}, {\"age\": {\"$lt\": 20 }} ] }";
,那么你可以很容易地与此util的解析它:
import com.mongodb.util.JSON;
DBObject query = (DBObject) JSON.parse(s);
yourCollection.find(query);
看看In Java, is there a way to write a string literal without having to escape quotes?使长查询引号的转义表达式一点点更轻松。