Pro: You boil all of your query generation code down into an elegant DSL that makes it easy to define complex queries across your data.
Con: You now have a whole bunch of complex queries across your data that you're going to need to figure out and write.