Предполагам:
{
g: [
{ _id: ObjectId(), property: '' },
// next
]
}
Тип структура за този въпрос.
Не нормално. _id
s са уникални идентификатори за обекти. Като такъв, ако искате да добавите _id
в рамките на обект на поддокумент, тогава може да не сте нормализирали данните си много добре и това може да е знак за основен пропуск в дизайна на вашата схема.
Поддокументите са предназначени да съдържат повтарящи се данни за този документ, т.е. адресите или потребител или нещо подобно.
Това се казва _id
не винаги е лошо да добавите. Вземете примера, който току-що посочих с адресите. Представете си, че трябва да имате система за пазарска количка и (по някаква причина) не сте копирали адреса в документа за поръчка, тогава ще използвате _id
или някакъв друг идентификатор, за да извадите този поддокумент.
Също така трябва да вземете предвид свързването на документи. Ако това _id
описва друг документ и свойствата са персонализирани атрибути за този документ във връзка с този свързан документ, тогава това също е добре.
ObjectId
все още е доста голям, така че това е нещо, което трябва да се вземе предвид при по-малък, по-малко уникален идентификатор или неизползване на _id
изобщо за поддокументи.
За индекси всъщност не работи по нищо различно от стандартния _id
поле в самия документ и уникален индекс в полето трябва да работи в цялата колекция (в зависимост от сценария, тествайте вашите заявки).
NB:MongoDB няма да добави _id
към поддокументи за вас.