Не пойму что не так, созданное правило добавления индексов в схеме по факту почему то не работает.
Начну с начала
Удаляю все индексы в коллекции popsts
db.posts.dropIndexes()
Результат db.posts.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "site.posts"
}
]
Пытаюсь произвести выборку .skip(10000).limit(12).sort({indexAt: -1}) на странице вылетает сообщение следующего содержания
Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.
Ок. индекса нет, иду в схему mongoose и добавляю следующее
schema.index({indexAt: 1});
Перезапускаю ноду и обновляю страницу
Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.
Захожу в mongodb и проверяю индексы
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "site.posts"
},
{
"v" : 2,
"unique" : true,
"key" : {
"url" : 1
},
"name" : "url_1",
"ns" : "site.posts",
"background" : true
},
{
"v" : 2,
"key" : {
"indexAt" : 1
},
"name" : "indexAt_1",
"ns" : "site.posts",
"background" : true
}
]
Индекс создался, но ошибка не продает, пока в самой mongodb не создать индекс
db.wallpapers.createIndex({'indexAt': 1})
И только после этого все начинает работать, и структура индексов одинаковая. Почему так? Mongodb кеширует индексы или что происходит? Как это можно побороть? (MongoDB shell version v3.4.10)