#mongodb #nosql
#mongodb #nosql
Вопрос:
Я не понимаю назначения поля _id, когда оно ссылается на простой вложенный объект, например, он не используется в качестве корневого объекта в выделенной коллекции.
Допустим, у нас есть простой объект-значение, подобный Money({currency: String, amount: Number })
. Очевидно, что вы никогда не собираетесь хранить такой объект значения отдельно в выделенной коллекции. Скорее всего, он будет привязан к транзакции или продукту, у которых будет своя коллекция.
Но вы все равно можете запросить конкретные валюты или суммы, которые выше / ниже заданного значения. И вы могли бы программно (не на уровне базы данных) установить значение транзакции таким же, как для приобретенного продукта.
Нужен ли вам _id в этом случае? В каких случаях вложенному объекту требуется _id?
Ответ №1:
Предполагая, что _id, о котором вы спрашиваете, является ObjectId, единственное назначение такого поля — однозначно идентифицировать объект. Либо документ в коллекции, либо вложенный документ в массиве.
Из описания вашего денежного дела не кажется необходимым иметь такое поле _id для вашего объекта value. Допустимым вариантом использования может быть массив неуникальных / неидентифицируемых вложенных документов, например, записей журнала, зашифрованных данных и т.д.
ODM могут добавлять такое поле по умолчанию, чтобы иметь унифицированный способ обращения к вложенным документам независимо от потребностей приложения.