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.