Можно ли настроить имя поля ObjectId по умолчанию в MongoDB?

Можно ли изменить имя поля ObjectId с «_id» на «id» или что-то еще?

Я искал в документах и ​​пока ничего не нашел по этому поводу. Я использую MongoDB с pymongo (драйвер Python) на сервере, где я буду предоставлять объекты JSON, а библиотека js, которую я использую на клиенте, ожидает объекты с полем «id».


person Diego Ponciano    schedule 10.02.2012    source источник


Ответы (2)


База данных всегда будет ожидать или добавлять поле «_id», но в некоторых случаях вы можете скрыть это от клиента.

Ознакомьтесь с ссылками на SON манипуляторы. Вы можете преобразовывать документы по мере их вставки и извлечения, чтобы динамически изменять поле «_id», чтобы оно отображалось так, как если бы это было поле «id». Однако имейте в виду, что это только преобразует документ, а НЕ запросы: findOne({"id": "1234567890"}) ничего не найдет, потому что поле "id" на самом деле не существует в базе данных.

Вам придется решить для себя, является ли это хорошей идеей для вашего варианта использования.

person mattbornski    schedule 10.02.2012

Я так не думаю. Поле _id создается автоматически для каждого созданного документа. Вы можете создать другое поле идентификатора, если хотите использовать что-то еще, например целочисленное значение.

person SomethingOn    schedule 10.02.2012
comment
Ну, он не может, пока не перекомпилирует монго :-) - person Sergio Tulentsev; 11.02.2012