Подтвердить что ты не робот

Mongodb: структура индекса Multikey?

Мне трудно понять, как именно индексирование выполняется на multikeys в mongodb.

Это то, что я читал о мультики в документах mongodb на своем веб-сайте:
1) "Создание индекса по индексам элементов массива приводит к индексированию базы данных каждого элемента массива"
2) "... индексирует все теги в документе и создает записи индекса для" X "," Y "и" Z "для этого документа."

Итак, что именно это означает для записей индекса для этого документа? Означает ли каждый документ записи, и в этом случае поиск будет полным сканированием таблицы? Или это тот же индекс b-tree mysql, где каждая запись индекса указывает на несколько документов для каждого соответствующего события, и в этом случае я слишком много думаю.

Возьмем пример:
obj1 = {
name: "Apollo",
text: "Some text about Apollo moon landings",
tags: [ "moon", "apollo", "spaceflight", "nasa" ]
}

obj2 = {
name: "Atlantis",
text: "Some text about Atlantis flight missions",
tags: [ "space", "atlantis", "spaceflight", "nasa" ]
}

>db.articles.ensureIndex( { tags : 1 } )

Пожалуйста, помогите мне понять! Спасибо, заранее.

4b9b3361

Ответ 1

В этом случае ваш индекс (который является B-деревом) будет выглядеть так:

 apollo => [ obj1 ]
 atlantis => [ obj2 ]
 moon => [ obj1 ]
 nasa  => [ obj1, obj2 ]
 space => [ obj2 ]
 spaceflight => [ obj1, obj2 ]

Это просто "обычный" индекс B-дерева, за исключением того, что каждый документ может появляться более одного раза (он появляется один раз для каждого уникального значения тега).

Ответ 2

Я думаю, вы неправильно поняли разницу между индексами Multiindex и Compound:

Компонентные индексы являются определяемыми пользователем индексами для нескольких полей одновременно. Множественные индексы: MongoDB определяет, является ли поле, на котором выпущен индекс, массив и создает индекс для каждого из элементов массива, например

db.user.ensureIndex({ "address.street": 1});

В этом случае и потому, что целевое поле является массивом, индекс будет хранить все элементы, но только один раз.

Я очень рекомендую вам взглянуть на эту простую статью, которая разъяснит вам сомнения в отношении простых типов imdex в MongoDB: http://mongodbspain.com/en/2014/01/24/mongodb-indexes-part1/

Привет,