I have a table called devicesegments, each row of which contains a large array called devices. Owing to the size of the device array, I’ve been asked not to include it in my query for a page that lists all devicesegments, but only include their count. Is this possible?
What I was doing before :
A simple db.devicesegments.find()
What I’m doing now :
db.devicesegments.find({}, { devices : 0 })
What I want to achieve :
db.devicesegments.find({}, { devices : 0, devices.length : 1 })
Something like a COUNT(devices) AS device_count!
Ashkay, there’s no way to do this with Mongo currently. As @rompetroll says, your application should keep a “count” field on each document, and carefully $inc it whenever you change the number of entries in the array. Then when you query for the document, exclude the array like:
If you’re willing to run MongoDB 2.1, which is a development release, the aggregation framework provides a means to calculate the array size within a query:
http://www.mongodb.org/display/DOCS/Aggregation+Framework