Обеспечение индекса для элемента массива не работает должным образом для меня.
Например, со следующими данными
> db.test.find()
{ "_id" : 7891236423, "arr" : [ "a", "b", "c" ] }
{ "_id" : 7891236424, "arr" : [ "b", "c", "d" ] }
{ "_id" : 7891236425, "arr" : [ "b", "c", "a" ] }
>
следующий запрос работает, как и ожидалось, когда нетindex
> db.test.find({"arr.0":"a"})
{ "_id" : 7891236423, "arr" : [ "a", "b", "c" ] }
>
, но тот же запрос не возвращает результат, если я пытаюсь создать индекс для arr.0
> db.test.ensureIndex({"arr.0":1})
> db.test.find({"arr.0":"a"})
>
Я не понимаю, что здесь происходит, в моеммнение, что индекс никогда не должен влиять на возвращаемые данные.Или это должно быть?
Это ошибка?Или злоупотребление индексом?Я был бы рад любым объяснениям такого поведения и еще более рад любым подсказкам о том, как мне получить индекс для одного элемента массива.
PS: я знаю, что могу создать индекс для arr
и сначала запросите arr
перед запросом arr.0
, что является допустимым обходным решением для данного примера.Но это не помогает, как только мне нужно отсортировать огромное количество данных по arr.0
(MongoDB требует индекс для этого)