I have a question regarding MongoDB with Spring Data. I have these domain classes:
@Document
public class Deal {
@Id
private ObjectId _id;
priv
MongoDB CRUD operations (insert, update, find, remove) all operate on top-level documents exclusively -- although of course you can filter by fields in embedded documents. Embedded documents are always returned within the parent document.
The _id field is a required field of the parent document, and is typically not necessary or present in embedded documents. If you require a unique identifier, you can certainly create them, and you may use the _id field to store them if that is convenient for your code or your mental model; more typically, they are named after what they represent (e.g. "username", "otherSystemKey", etc). Neither MongoDB itself, nor any of the drivers will automatically populate an _id field except on the top-level document.
Specifically in Java, if you wish to generate ObjectId values for the _id field in embedded documents, you can do so with:
someEmbeddedDoc._id = new ObjectId();