Я хотел бы создать индекс, который поддерживает запросы к определенным позициям элементов массива.
Даны несколько миллионов документов с массивами значений:
db.foo.insert({ array: [true, false, null, true] })
db.foo.insert({ array: [false, null, true, true] })
Я хочу найти документы с true
в позиции 2.
db.foo.find({ "array.2": true })
Если я создам многоключевой индекс:
db.foo.createIndex({ array: 1 })
Индекс поддерживает запросы формы { "array": true }
(поиск всех элементов массива), но не { "array.2": true }
(поиск определенного элемента массива).
В документации говорится: "MongoDB создает ключ индекса для каждого элемента в массиве ", поэтому я ожидал, что если я создам индекс для поля array
, он будет использоваться для запросов к array.0
, array.1
, array.2
и т. д. Есть ли какой-то трюк, чтобы заставить это работать?