我正在尝试提出一个概念来获取查询字符串,并通过查询对象将其传递给类似的东西:
returnList = mongoTemplateTracking.find(query,TrackingData.class, COLLECTION_NAME);
我一直在查看Query和Criteria类的构造函数,看看它们是否可以采用原始字符串,例如:
"ID" : "32399a"
而不是通过Criteria.where()构建Criteria对象。是()等..
我见过方法
protected <T> List<T> doFind(String collectionName,
com.mongodb.DBObject query,
com.mongodb.DBObject fields,
Class<T> entityClass)
然而,当我将mongoTemplateTracking
自动装入我的课程时,我无法访问此方法。
答案 0 :(得分:2)
MongoDB查询语言(&#34; MQL&#34;)很容易用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?,可以更轻松地在长查询表达式中转义引号。
答案 1 :(得分:0)
JSON.parse(json)已弃用。使用此代码:
String s = "{\"$or\": [ {\"name\": \"buzz\"}, {\"age\": {\"$lt\": 20 }} ] }";
Bson bson = BasicDBObject.parse( json );
collection.find(bson);