如何获取从gmongo
驱动程序发送到mongod
的确切查询(用于调试目的)。
在 mysql 中,通过向数据源添加logSql = true
来实现。
我正在编写一个聚合查询,其中包含开始日期和结束日期之间的匹配管道。日期以普通的Java Date类给出。
db.collection.aggregate(
[
$match:
[
dateIssued: [
$gte: fromDate,
$lte: toDate
]
]
],
[
$group:
[
_id: "\$type",
total:
[
$sum: 1
]
]
])
它似乎不会根据日期过滤结果。它给了我一切。
答案 0 :(得分:0)
没有办法从驱动程序执行此操作,我发现最好的方法是使用mongosniff
。见http://docs.mongodb.org/manual/reference/program/mongosniff/
答案 1 :(得分:0)
如何获取从gmongo驱动程序发送到mongod的确切查询(用于调试目的)?
启用mongodb profiling,您可以log all your queries。
在mysql中,通过将logSql = true添加到datasource来实现。
我认为您希望根据Grails中的配置自动执行此操作。然后,执行以下操作:
在Config.groovy
:
mongo.profiling.enabled = true
在Bootstrap.groovy
:
GMongo mongo = new GMongo(grailsApplication.config.grails.mongo.host, grailsApplication.config.grails.mongo.port)
DB db = mongo.getDB(grailsApplication.config.grails.mongo.databaseName)
if( grailsApplication.config.grails.mongo.username ) {
boolean auth = db.authenticate(grailsApplication.config.grails.mongo.username ,
grailsApplication.config.grails.mongo.password ? grailsApplication.config.grails.mongo.password.toCharArray() : "" )
if( !auth ) {
log.error( "MongoDB failed to authenticate")
return
}
}
if( grailsApplication.config.mongo.profiling.enabled ) {
db.setProfilingLevel(2)
}
else {
db.setProfilingLevel(0)
}