Медленное время отклика на запрос MongoDB

Я работаю над проектом, который использует гибкие схемы. Я настроил локальный сервер mongodb и использую mongoose внутри node.

Возникла интересная проблема с масштабированием, и мне было интересно, нормально ли это время отклика. Если запрос возвращает 50 документов, мне требуется 5-10 секунд, чтобы ответить монго. В той же коллекции запрос, который возвращает 2 документа, составляет миллисекунды.

Это не медленное соединение, потому что оно локальное, мне было интересно, есть ли у кого-нибудь представление о том, что вызывает это.

Я использую OS X и монго 3.0.1.

Редактировать: на данный момент документы почти пусты, только с одним или двумя свойствами.

Редактировать: общее количество документов не имеет большого значения, только возвращаемый размер. Если есть 51 документ, 50 таких как {_id: "...", _schema:"bar"} и 1 {_id:"...", _schema: "foobar" }, то collection.find({_schema:"bar"}) занимает несколько секунд, а collection.find({_schema:"foobar"}) не требует времени.

Объясните вывод:

"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

person Sam DeSota    schedule 31.05.2015    source источник
comment
Без какой-либо дополнительной информации я не понимаю, как на это можно ответить. Хотя не кажется нормальным.   -  person Dave Newton    schedule 31.05.2015


Ответы (1)


Нет, это не должно занимать так много времени.

Проблема, вероятно, в операциях в вашем запросе (проекции, сортировка, геопоиск, группировка и т. д.). Лучший способ решить эту проблему — создать индекс для ускорения такого запроса.

Чтобы создать индекс в поле _schema, выполните эту команду в mongodb:

db.collection.ensureIndex({"_schema":1});
person Joanvo    schedule 31.05.2015