2016-03-13 29 views
12

Sto usando Spring Data's Querydsl integration per eseguire le mie query utilizzando i predicati.Dati primari Mongodb: come eseguire il dump di query/comandi non elaborati generati tramite QueryDsl?

findAll(predicate, pageable) 

C'è un modo per scaricare le query/comandi non elaborati che vengono eseguiti?

ho anche guardato la risposta a questa domanda e non stava funzionando per me .. Configure logging for the MongoDB Java driver

--Update-- Sono riuscito a ottenere la registrazione di lavoro con l'aggiunta di logging.level .org.mongodb.driver = DEBUG in application.properties (non log4j.properties)

Ma ancora, non riesco a vedere la query grezzo che è in corso di esecuzione:

2016-03-23 ​​21:50 : 56 query DEBUG: 56 - query completata 2016-03-23 21:50:56 DEBUG query: 56 - L'invio di query di namespace testdb.reservation sulla connessione [connectionId {localValue: 4, serverValue: 42631}] al server ds046785.mongolab.com:39186

+0

Sul lato MongoDB, è possibile utilizzare il [profiler] (https://docs.mongodb.org/manual/administration/analyzing-mongodb-performance/#database-profiling) con un livello di profilo impostato su '2' per registra tutte le query e i comandi ricevuti dall'istanza. – Nicolas

+0

In definitiva, il mongo java driver è responsabile dell'invio delle query, quindi puoi ancora impostare il livello log 'org.mongodb' su' DEBUG' e vedere le query emesse –

+0

Ho aggiunto questa riga nel mio log4j.properties: log4j. logger.org.mongodb.driver = DEBUG ma non è ancora registrato nulla – user1955934

risposta

4

Attiva il profiler impostando il valore di profilo utilizzando il seguente comando nella shell mongo:

db.setProfilingLevel(2) 

uscita del profilatore possono essere visualizzati utilizzando questo comando:

db.system.profile.find({ millis : { $gt : 100 } }) 

questo comando visualizza tutte le operazioni più lungo di 100 millisecondi

+0

Ho eseguito il comando db.setProfilingLevel (2) e poi eseguo la mia query sul db, ma db.system.profile.find ({millis: {$ gt: 0}}) non restituisce la query in cerca per – user1955934

+0

Sì, lo stesso qui, meglio sarà per pulire il profilo ed eseguire 'db.system.profile.find()' da solo. Puoi pulire il profilo in questo modo: 'db.setProfilingLevel (0); db.system.profile.drop(); db.setProfilingLevel (2);' – megalucio