MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongo _id за масив от поддокументи

Предполагам:

{
    g: [
        { _id: ObjectId(), property: '' },
        // next
    ]
}

Тип структура за този въпрос.

Не нормално. _id s са уникални идентификатори за обекти. Като такъв, ако искате да добавите _id в рамките на обект на поддокумент, тогава може да не сте нормализирали данните си много добре и това може да е знак за основен пропуск в дизайна на вашата схема.

Поддокументите са предназначени да съдържат повтарящи се данни за този документ, т.е. адресите или потребител или нещо подобно.

Това се казва _id не винаги е лошо да добавите. Вземете примера, който току-що посочих с адресите. Представете си, че трябва да имате система за пазарска количка и (по някаква причина) не сте копирали адреса в документа за поръчка, тогава ще използвате _id или някакъв друг идентификатор, за да извадите този поддокумент.

Също така трябва да вземете предвид свързването на документи. Ако това _id описва друг документ и свойствата са персонализирани атрибути за този документ във връзка с този свързан документ, тогава това също е добре.

ObjectId все още е доста голям, така че това е нещо, което трябва да се вземе предвид при по-малък, по-малко уникален идентификатор или неизползване на _id изобщо за поддокументи.

За индекси всъщност не работи по нищо различно от стандартния _id поле в самия документ и уникален индекс в полето трябва да работи в цялата колекция (в зависимост от сценария, тествайте вашите заявки).

NB:MongoDB няма да добави _id към поддокументи за вас.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Търсене на текст в Mongoose с оператор AND

  2. MongoDB с Docker не успя да се свърже със сървър [localhost:27017] при първото свързване

  3. MongoDB Group, използваща Ruby драйвер

  4. Агрегирането на Mongodb - сортирането прави заявката много бавна

  5. Динамичен xml в mongoDB