Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mongodb query slow response time

I'm working on a project that uses flexible schemas. I've setup a local mongodb server and am using mongoose inside node.

Having an interesting scaling problem and was wondering if these response times were normal. If a query returns 50 documents, I takes 5-10 seconds for mongo to respond. In the same collection, a query that returns 2 documents is milliseconds.

It's not a slow connection because it's local, was wondering if anyone had an idea as to what was causing this.

I'm using OS X and mongo 3.0.1

Edit: The documents are nearly empty at the moment, with just one or two properties.

Edit: The total number of documents doesn't really matter, just the returned size. If there are 51 documents, 50 like {_id: "...", _schema:"bar"} and 1 {_id:"...", _schema: "foobar" } then collection.find({_schema:"bar"}) takes several seconds and collection.find({_schema:"foobar"}) takes no time.

Explain output:

"queryPlanner" : {
    "plannerVersion" : 1,
    "namespace" : "mean-dev.documentmodels",
    "indexFilterSet" : false,
    "parsedQuery" : {
        "$and" : [ ]
    },
    "winningPlan" : {
        "stage" : "COLLSCAN",
        "filter" : {
            "$and" : [ ]
        },
        "direction" : "forward"
    },
    "rejectedPlans" : [ ]
},
"serverInfo" : {
    "host" : "Sams-MBP.local",
    "port" : 27017,
    "version" : "3.0.1",
    "gitVersion" : "nogitversion"
},
"ok" : 1
like image 960
Sam DeSota Avatar asked Feb 28 '26 21:02

Sam DeSota


1 Answers

No, it should not take that much time.

The issue is probably in the operations in your query (projections, sorting, geosearch, grouping, etc). The best way to solve that is by creating an index to speed up such query.

To create an index on _schema field execute that command in mongodb:

db.collection.ensureIndex({"_schema":1});
like image 83
Joanvo Avatar answered Mar 03 '26 12:03

Joanvo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!