Recently I saw an article on the MongoHQ blog where they described a “slow query” and how to improve the performance.
The problem is this. I have a document with the following fields:
- ID
- submitdate
- status
- content
And the status can be something like ‘published’, ‘rejected’, ‘in progress’, ‘draft’ etc.,
I want to find all articles with some set of statuses and sorted by submit date.
Apparently the MongoDB solution to this problem (according to their own blog) is to:
- create a new field called ‘unpublished_submit_date’
- set that field to a ‘null’ value if the document is of an uninteresting status (i.e. published)
- set that field to the submitdate if it is an interesting status (i.e not published)
- then query on the single column unpublished_submit_date
Really? Really? You’ve got to be kidding me.
For more on this interesting exchange, a response from a MongoDB fanboy, and a follow-up, read my work blog at
http://parelastic.com/blog/more-subject-improving-performance-removing-query-logic
The things people have to do to use NoSQL, boggles the mind!