Spring 数据 mongodb 按 json 字符串查询

Spring data mongodb query by json string

我的代码需要支持客户端发送的任何查询。客户端将以 json 的形式发送查询。我使用 java mongo 驱动程序低级别 api 使用以下代码完成了此操作,
BasicDBObject queryObject = (BasicDBObject) JSON.parse(whereJson.toString());
由于我是 spring data mongodb 的新手,我无法在 Query 或 Criteria 类 中找到类似的解决方案。我检查了不同的教程,但找不到任何 .是否可以在 spring 数据 mongodb 中执行,或者我应该使用低级别 apis 本身?

您可以使用 BasicQuery 对象从纯 JSON 字符串创建 Query 实例。以下示例演示了如何从普通的 JSON String:

构造一个 Query 实例
BasicQuery query = new BasicQuery("{ age : { $lt : 50 } }");
List<Person> result = mongoTemplate.find(query, Person.class);    

另一种使用低级的方法API:

DBObject dbObject = (DBObject) JSON.parse(query); 
DBCursor cursor = mongoTemplate.getCollection("person").find(dbObject); 

然后您可以使用 MongoConverter read() 方法将 return 对象映射回您的 Person POJO:

List<Person> returnList = new ArrayList<Person>();
while (cursor.hasNext()) { 
    DBObject obj = cursor.next(); 
    Person person = mongoTemplate.getConverter().read(Person.class, obj);  
    returnList.add(person); 
}