Как быстро можно искать по ObjectId в Mongodb? - PullRequest
4 голосов
/ 01 июля 2011

Я везде ищу ObjectIds, как будто они торт.

Это нормально?_id поля должны выглядеть как сумасшедшие, верно?

Ответы [ 4 ]

6 голосов
/ 02 июля 2011

Более точный ответ: MongoDB использует индексы B-Tree. Поиск определенного значения в B-дереве имеет сложность O (log n) в среднем и наихудшем случаях, что можно считать достаточно быстрым (то есть двоичный поиск). Это не постоянная сложность = O (1), поэтому вы все равно можете иметь некоторые эффекты замедления, если размер индекса будет больше, чем доступная оперативная память. (MongoDB пытается сохранить индексы в оперативной памяти, и каждый ввод-вывод, необходимый для поиска индекса на диске, значительно замедлит ваш запрос).

2 голосов
/ 01 июля 2011

_id является первичным ключом. Это проиндексировано. Конечно, это быстро.

0 голосов
/ 02 июля 2011

ObjectIds, если ваш основной метод доступа к данным, будет самым быстрым способом получения ваших данных из MongoDB.Мы используем наш MongoDB в качестве хранилища ключей для большей части нашего доступа к данным.Вы получите отличные результаты, выполняя то, что делаете.

0 голосов
/ 01 июля 2011

Индекс в поле _id автоматически создается монго и первичным ключом по умолчанию. Быстро, доступ к документам будет очень быстрым по полю _id.

Какие у вас проблемы?

...