Il mio codice deve supportare qualsiasi query inviata dal client. Il cliente invierà la query come un json. Ho fatto questo usando il java mongo driver api di basso livello usando il seguente codice, BasicDBObject queryObject = (BasicDBObject) JSON.parse(whereJson.toString());
Dato che sono un principiante in primavera dati mongodb, non riesco a trovare una soluzione simile nelle classi Query o Criteria. Ho controllato diversi tutorial e non ho trovato nulla. È possibile fare in primavera dati mongodb o dovrei usare apis di basso livello?Spring data mongodb query by json string
5
A
risposta
6
È possibile creare istanze di query da una stringa JSON normale utilizzando l'oggetto BasicQuery. L'esempio seguente mostra come è possibile costruire un esempio di query da un JSON stringa semplice:
BasicQuery query = new BasicQuery("{ age : { $lt : 50 } }");
List<Person> result = mongoTemplate.find(query, Person.class);
Un altro modo, che utilizza l'API di basso livello:
DBObject dbObject = (DBObject) JSON.parse(query);
DBCursor cursor = mongoTemplate.getCollection("person").find(dbObject);
È quindi possibile mappare il ritorno oggetti di nuovo a il POJO Persona utilizzando il metodo read() MongoConverter:
List<Person> returnList = new ArrayList<Person>();
while (cursor.hasNext()) {
DBObject obj = cursor.next();
Person person = mongoTemplate.getConverter().read(Person.class, obj);
returnList.add(person);
}
Wow. Grazie per questo . Ero bloccato e in attesa di una soluzione. Grazie mille :) –
@Mohammedshebin Nessun problema, felice di aiutare :) – chridam
@chridam Ciao, Come supportare query aggregate come db.CollectionName.aggregate ([{$ match: {"st": "i"}}, { $ gruppo:}, {} ..]) ...? –