Сохранить _Id как объект или строку в MongoDB?
Я разрабатываю API с помощью Codeigniter и MongoDB.
В этой системе я сохраняю полное имя и _ID пользователей, что выбранный пользователь
следует.
Что лучше делать с _Id? Хранить его как объект или строку?
Если я сохраню его как объект, мне нужно преобразовать его в строку, если повторять повторителей в противном случае
выход выглядит странно.
Мой вопрос действительно. Можно ли хранить _Id как строку, а не объект?
Что является недостатком хранения в виде строки?
Спасибо за вход!
Ответы
Ответ 1
Производительность для запросов (и обновлений) действительно лучше с objectid. Более того, объектив довольно мал в пространстве.
Из официального документа:
BSON включает в себя двоичный тип данных данных для хранения байтовых массивов. С помощью это сделает значения id и их соответствующие ключи в _id индекс, в два раза меньше.
вот 2 ссылки, которые могут вам помочь:
- http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs
- http://www.mongodb.org/display/DOCS/Object+IDs
Ответ 2
Когда вы используете ObjectId
, он генерирует _id
как уникальное значение на всех ваших компьютерах. Поэтому, если вы используете Sharding, вы не будете беспокоиться о конфликтах _id
. Посмотрите, как ObjectId генерируется в specification
Но если вы используете строку, вы должны ее сгенерировать.