Я пытаюсь применить набор фильтров индекса для очень простого случая. Но это не работает. Даже для действительно простых случаев.
Я создал простую коллекцию, в которой каждая запись выглядит так:
{
"_id" : ObjectId,
"SetId" : 324,
"id_internal" : "BBU1P0ALB",
"SetName" : "Name",
(...)
}
и я добавил индекс:
{
"SetName" : 1,
"id_internal": 1
}
Наконец-то я подготовил запрос, который выглядит так:
db.TestCollection.find( { SetName: "Name" } );
Объяснение говорит, что indexFilterSet: значение false, как и ожидалось (и Collscan в качестве этапа для плана выигрыша).
Наконец я приготовил:
db.runCommand(
{
planCacheSetFilter: "TestCollection",
query: { SetName: "A" },
indexes: [
{ "SetName_1_id_internal_1" : 1 }
]
}
)
Теперь после повторной попытки запроса (find ({SetName: "Name"})) я ожидал, что объяснение скажет indexFilterSet: true и затем выиграет простую точку в моем индексе. Но этого не происходит. Очевидно: db.runCommand ({planCacheListFilters: "TestCollection"}) подтверждает, что мой фильтр был добавлен.
Можете ли вы помочь мне с настройкой формы запроса? Или есть другая проблема?
Спасибо за любую помощь!