Индексирование по полю, которое находится в массиве вложенных документов - PullRequest
11 голосов
/ 24 мая 2011

Я пытаюсь определить лучший дизайн для системы обмена сообщениями, которую я портирую с SQL Server на MongoDB - в настоящее время (в SQL Server) существуют таблицы дерева, в которых хранится сообщение: Messages, Inbox и Sent. Сообщение сохраняется в таблице «Сообщения», и в папке «Входящие / Отправленные» есть записи для всех получателей / отправителей для каждого сообщения.

Теперь в MongoDB я хотел объединить эти три в одну коллекцию с такими документами:

{
    _id: 
    subject:
    body:
    sender: {memid:, name:}
    recip: [{memid:, name:}, {memid:, name:}, {memid:, name:}, etc]

}

Теперь мне нужно иметь возможность извлечь все сообщения для данного получателя по memid, и я должен сделать это быстро, поэтому требуется индекс (у меня будет сотни миллионов таких записей). Итак, мой вопрос - могу ли я индексировать по полю документа в массиве?

1 Ответ

13 голосов
/ 24 мая 2011

см. Здесь https://docs.mongodb.com/manual/indexes/#multikey-index

Индекс по полю документа в массиве поддерживается mongodb.

Пример:

{ addr.zip: 1 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...