Speeding up MongoBD query { $ne: [] }
Your question specifies:


  ... a query looking for all documents where a certain field, whose value is an array, is empty.


Your query is count all documents where the array is not empty, is this intended? 

Depending upon the cardinality of the values of this field, this could be causing these values to be expensive. 

To query for empty arrays, the operation would be: 

 db.collection.explain().count( 'things.titles' : [ ] } )


Note that there are edge cases to this query. For example, the following would be returned: 

  { "_id" : ..., "things.titles" : [ [ ] ] }


The index usage of the count operation can be determined using the collection.explain() function. 

For example: 

 db.collection.explain().count({'things.titles': {'$ne': [] }})


The output will provide information showing the index bounds being used (if they exist).