MongoDB CRUD операции (insert
, update
, find
, remove
) всички работят изключително върху документи от най-високо ниво - въпреки че, разбира се, можете да филтрирате по полета във вградените документи. Вградените документи винаги се връщат в родителския документ.
_id
полето е задължително поле на родителския документ и обикновено не е необходимо или присъства във вградените документи. Ако имате нужда от уникален идентификатор, със сигурност можете да ги създадете и можете да използвате _id
поле, за да ги съхранявате, ако това е удобно за вашия код или вашия умствен модел; по-често те са наименувани на това, което представляват (напр. „потребителско име“, „otherSystemKey“ и т.н.). Нито самият MongoDB, нито някой от драйверите автоматично ще попълнят _id
поле освен в документа от най-високо ниво.
По-конкретно в Java, ако искате да генерирате стойности на ObjectId за _id
поле във вградените документи, можете да го направите с:
someEmbeddedDoc._id = new ObjectId();