Как Mongo DB обрабатывает большое поле массива?

Я пытаюсь сохранить список ObjectId в документе в виде поля массива.

Я понимаю, что Mongo DB имеет ограничение на размер 4 МБ для одного документы. Таким образом, учитывая, что длина ObjectId составляет 12 байтов, документ должен иметь возможность обрабатывать более 300 000 записей в одном поле массива. (Сообщите мне, если расчет выключен.)

Если количество записей в массиве приближается к этому пределу, на какую производительность я могу рассчитывать? Особенно, когда поле индексируется? Возникли проблемы с памятью?


Типичные запросы будут выглядеть следующим образом:

Запрос по одному значению

db.myCollection.find(
  {
    myObjectIds: ObjectId('47cc67093475061e3d95369d')
  }
);

Запрос по нескольким значениям

db.myCollection.find(
  {
    myObjectIds: {$in: [ObjectId('47cc67093475061e3d95369d'), ...]}
  }
);

Добавить новое значение в несколько документов

db.myCollection.update(
  {
    _id: {$in: [ObjectId('56cc67093475061e3d95369d'), ...]}
  },
  {
    $addToSet: {myObjectIds: ObjectId('69cc67093475061e3d95369d')}
  }
);


11
задан Jaepil 15 March 2011 в 07:30
поделиться