MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongo _id dla tablicy poddokumentów

Zakładam:

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

Rodzaj struktury dla tego pytania.

Nie normalnie. _id s to unikalne identyfikatory podmiotów. W związku z tym, jeśli chcesz dodać _id w obiekcie poddokumentu, być może nie znormalizowałeś zbyt dobrze swoich danych i może to być oznaką podstawowej wady w projekcie schematu.

Dokumenty podrzędne są zaprojektowane tak, aby zawierały powtarzające się dane dla tego dokumentu, tj. adresy, użytkownika lub coś takiego.

Biorąc to pod uwagę _id nie zawsze jest złą rzeczą do dodania. Weźmy przykład, który właśnie podałem z adresami. Wyobraź sobie, że masz system koszyka na zakupy i (z jakiegoś powodu) nie powieliłeś adresu w dokumencie zamówienia, wtedy użyjesz _id lub inny identyfikator, aby uzyskać ten poddokument.

Musisz również wziąć pod uwagę łączenie dokumentów. Jeśli ten _id opisuje inny dokument, a właściwości są atrybutami niestandardowymi dla tego dokumentu w odniesieniu do tego połączonego dokumentu, to też jest w porządku.

ObjectId jest nadal dość duży, więc należy wziąć to pod uwagę w przypadku mniejszego, mniej unikalnego identyfikatora lub nieużywania _id w ogóle dla poddokumentów.

W przypadku indeksów tak naprawdę nie działa inaczej niż standardowy _id pole w samym dokumencie, a unikalny indeks w całym polu powinien działać w całej kolekcji (w zależności od scenariusza, przetestuj swoje zapytania).

Uwaga:MongoDB nie doda _id do poddokumentów dla Ciebie.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Współpraca MongoDB lazy loading z Jacksonem @JsonIgnore w SpringBoot Rest Controller

  2. MongoDB Bound Queries:Jak przekonwertować milę na radiany?

  3. NodeJS + Mongo:Wstaw, jeśli nie istnieje, w przeciwnym razie - zaktualizuj

  4. Nie można uwierzytelnić w mongo, auth nie powiodło się

  5. MongoDB- Wstaw, jeśli nie istnieje, w przeciwnym razie pomiń