Я реализую базу данных контактов, которая обрабатывает довольно много полей. Большинство из них предопределены и могут считаться связанными, но есть пара, которых нет. Мы будем называть одну из этих групп полей. Способ, которым мы в настоящее время выполняем его, - это (каждый документ/контакт имеет поле "группы" ):
'groups' : {
152 : 'hi',
111 : 'group2'
}
но после некоторого чтения мне кажется, что я должен это делать:
'groups' : [
{ 'id' : 152, 'name' : 'hi' },
{ 'id' : 111, 'name' : 'group2' }
...
]
а затем примените индекс db.contact.ensureIndex({'groups.id':1});
Мой вопрос касается функциональности. Каковы различия между двумя структурами и как создается фактический индекс (просто ли он индексируется в каждом документе/контакте или он создает полномасштабный индекс, который имеет все группы из всех документов/контактов?).
Я как бы иду в предположении, что это конструктивно лучший способ, но если я ошибаюсь, дайте мне знать.