2016-10-26 3 views
0

Я пишу систему с регистрацией. И по возможностям устройств требование состоит в том, чтобы иметь 16 байтов для идентификатора пользователя. Кроме того, я знаю, что mongo создает ObjectID для каждого вставленного объекта, который уникален, по крайней мере, в коллекции. И этот идентификатор имеет длину 12 байтов. Мне было интересно - возможно ли изменить конфигурацию где-нибудь в mongo, чтобы он генерировал 16-байтовый идентификатор? Я думал о заполнении 12 байтов ids с 4 нулевыми байтами, это решение, но это грубая сила imo. Есть ли способ лучше?Изменить политику идентификатора mongodb

+0

Сначала вы можете изменить свое приложение, чтобы вставить эти идентификаторы, но затем вы также можете создать .mongorc для консоли, которая заменит помощника objectId вашим – Sammaye

ответ

1

Нет конфигурации на стороне сервера, чтобы изменить формат ObjectID, но вы можете предоставить все, что угодно _id в своем приложении. Для вставок драйверы генерируют _id для вас локально в любом случае за кулисами при вставке; сервер генерирует его только для операций upsert.

До тех пор, пока вы не зависеть от upsert, лучше всего создать свои собственные поля _id. Например, для 16-байтов можно использовать генератор UUID.

+0

. Можете ли вы показать пример, как я могу вставить '_id' в монго? Я думал, что поля '_ *' зарезервированы только для внутреннего использования mongodb. Или я должен следовать стандартной процедуре вставки с указанным полем '_id'? –

+0

Вы можете добавить _id как любое другое поле. – xdg

Смежные вопросы