Operações CRUD do MongoDB (
insert
, update
, find
, remove
) operam exclusivamente em documentos de nível superior - embora, é claro, você possa filtrar por campos em documentos incorporados. Documentos incorporados são sempre retornados dentro do documento pai. O
_id
field é um campo obrigatório do documento pai e normalmente não é necessário ou está presente em documentos incorporados. Se você precisar de um identificador exclusivo, certamente poderá criá-los e poderá usar o _id
campo para armazená-los se for conveniente para seu código ou seu modelo mental; mais tipicamente, eles são nomeados de acordo com o que eles representam (por exemplo, "username", "otherSystemKey", etc). Nem o próprio MongoDB, nem qualquer um dos drivers preencherão automaticamente um _id
campo, exceto no documento de nível superior. Especificamente em Java, se você deseja gerar valores ObjectId para o
_id
campo em documentos incorporados, você pode fazer isso com:someEmbeddedDoc._id = new ObjectId();