Сохранить _Id как объект или строку в MongoDB? - PullRequest
24 голосов
/ 14 октября 2011

Я занимаюсь разработкой API с использованием Codeigniter и MongoDB.В этой системе я сохраняю полное имя и _ID пользователей, за которыми следует выбранный пользователь.

Что лучше всего делать с _Id?Сохранить его как объект или как строку?Если я храню его как объект, мне нужно преобразовать его в строку при выводе подписчиков, в противном случае вывод выглядит странно.

Мой вопрос действительно.Можно ли хранить _Id в виде строки, а не объекта?Какова обратная сторона хранения в виде строки?

Благодарю за весь ввод!

Ответы [ 2 ]

20 голосов
/ 14 октября 2011

Производительность для запросов (и обновлений) действительно лучше с objectid. Более того, объекты довольно малы в пространстве.

Из официального документа:

BSON включает тип данных двоичных данных для хранения байтовых массивов. С помощью это сделает значения идентификатора и их соответствующие ключи в _id индекс вдвое меньше.

вот две ссылки, которые могут вам помочь: - http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs - http://www.mongodb.org/display/DOCS/Object+IDs

2 голосов
/ 14 октября 2011

Когда вы используете ObjectId, он генерирует _id как уникальное значение на всех ваших компьютерах.Поэтому, если вы используете Sharding, вы не будете беспокоиться о ваших _id конфликтах.Посмотрите, как ObjectId генерирует в спецификации
Но если вы используете строку, вы должны сгенерировать ее осторожно.

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