Мой код должен поддерживать любой запрос, отправляемый клиентом. Клиент будет отправлять запрос как json. Я сделал это, используя java mongo driver low level api, используя следующий код: BasicDBObject queryObject = (BasicDBObject) JSON.parse(whereJson.toString());
Как я новичок в данных весны mongodb, я не могу найти подобное решение в классах Query или Criteria. Я проверил различные учебники и не нашел их. Можно ли использовать весенние данные mongodb или я должен использовать apis самого низкого уровня?Spring data mongodb query by json string
5
A
ответ
6
Вы можете создать экземпляры запросов из простой строки JSON с помощью объекта BasicQuery. В следующем примере показано, как можно построить экземпляр запроса из простого 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);
Вы можете отобразить возвращать объекты обратно ваше лицо POJO с использованием метода MongoConverter read():
List<Person> returnList = new ArrayList<Person>();
while (cursor.hasNext()) {
DBObject obj = cursor.next();
Person person = mongoTemplate.getConverter().read(Person.class, obj);
returnList.add(person);
}
Ничего себе. Спасибо за это . Я застрял и ожидал решения. Спасибо большое :) –
@Mohammedshebin Не стоит беспокоиться, рад помочь :) – chridam
@chridam Привет, Как поддерживать агрегированный запрос, например db.CollectionName.aggregate ([{$ match: {"st": "i"}}, { $ group:}, {} ..]) ...? –