I need to implement some simple aggregations in my app powered by Grails 1.3.7. The mongodb-plugin of 1.0.0.RC3 ships with gmongo 0.9.1, where the aggregate functions are not implemented.
How can I solve the problem? Are there any hooks to call java-mongo API directly, or maybe there's some other plugin releases which allow aggregations?
TIA
So, I made it!
with a little amount of the blood shed, I found a way to use aggregations in gmongo 0.9.1 / mongodb 1.0.0.RC3 / Grails 1.3.7!
HOWTO:
you need to replace the mongo-java-driver with a newer version (I used the most recent for now 2.9.3). In Grails it looks like:
dependencies { compile 'org.mongodb:mongo-java-driver:2.9.3' }
In BootStrap or in my case Plugin-descriptor add the following line:
DBCollectionPatcher.PATCHED_METHODS << 'aggregate'
The aggregation invocation looks like:
def res = Task.collection.aggregate( [ $group:[ _id:'totalTime', time:[ $sum:'$time' ] ] ], [] as DBObject ).results()
and it works like a charm!