mongodb count vs find with count

mongodb, nosql

Solution

In your scenario, you should have an index.

Indexes

Indexes support the efficient execution of queries in MongoDB. Without indexes, MongoDB must perform a collection scan, i.e. scan every document in a collection, to select those documents that match the query statement.

UPDATE:

the question asked now is different. Is `collection.find({}).count()` more fast then `collection.count()`?

According to the MongoDB documentation:

db.collection.count()

count() is equivalent to the db.collection.find(query).count() construct.

Problem

I am performing a count of documents in a mongo (versions 2.4 and 3.2) collection. The collection is very big, 3821085 documents. I need to count all documents with a reference `_id`. I have tried two different queries: `db.SampleCollection.find({"field._id" : ObjectId("UUID")}).count()` `db.SampleCollection.count({"field._id" : ObjectId("UUID")})` This query takes a very long time. So much time that I have not let it complete, more than 5 minutes and I get scared and kill it. For this collection `field._id` is not an index. I do not have relevant info to use an index with this query. Is there a better approach to count document in mongo. UPDATE: I understand that I need an index on the field `field._id`. If I did have an index for the field which approach would perform better on a large collection `db.SampleCollection.find(...).count()` or `db.SampleCollection.count(...)`? Or is there no difference between the two?

Original source

Related problems