Spring data mongodb query by json string

2022-09-04 20:52:59

我的代码需要支持客户端发送的任何查询。客户端将以 json 的形式发送查询。我使用Java mongo驱动程序低级API使用以下代码完成了此操作,

因为我是春季数据mongodb中的新手,因此我无法在Query或Criteria类中找到类似的解决方案。我已经检查了不同的教程,找不到任何.是否可以在春季数据mongodb中执行此操作,或者我应该使用低级api本身?BasicDBObject queryObject = (BasicDBObject) JSON.parse(whereJson.toString());


答案 1

您可以使用 BasicQuery 对象从纯 JSON 字符串创建查询实例。以下示例演示如何从纯 JSON 字符串构造查询实例:

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() 方法将返回对象映射回您的 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); 
} 

答案 2