NoSQL / MongoDB: когда мне нужен _id во вложенных объектах?

#mongodb #nosql

#mongodb #nosql

Вопрос:

Я не понимаю назначения поля _id, когда оно ссылается на простой вложенный объект, например, он не используется в качестве корневого объекта в выделенной коллекции.

Допустим, у нас есть простой объект-значение, подобный Money({currency: String, amount: Number }) . Очевидно, что вы никогда не собираетесь хранить такой объект значения отдельно в выделенной коллекции. Скорее всего, он будет привязан к транзакции или продукту, у которых будет своя коллекция.

Но вы все равно можете запросить конкретные валюты или суммы, которые выше / ниже заданного значения. И вы могли бы программно (не на уровне базы данных) установить значение транзакции таким же, как для приобретенного продукта.

Нужен ли вам _id в этом случае? В каких случаях вложенному объекту требуется _id?

Ответ №1:

Предполагая, что _id, о котором вы спрашиваете, является ObjectId, единственное назначение такого поля — однозначно идентифицировать объект. Либо документ в коллекции, либо вложенный документ в массиве.

Из описания вашего денежного дела не кажется необходимым иметь такое поле _id для вашего объекта value. Допустимым вариантом использования может быть массив неуникальных / неидентифицируемых вложенных документов, например, записей журнала, зашифрованных данных и т.д.

ODM могут добавлять такое поле по умолчанию, чтобы иметь унифицированный способ обращения к вложенным документам независимо от потребностей приложения.