MongoDB Embedded Objects have no ID (null value)

后端 未结 4 1199
执念已碎
执念已碎 2020-12-08 07:16

I have a question regarding MongoDB with Spring Data. I have these domain classes:

@Document
public class Deal  {
    @Id
    private ObjectId _id;
    priv         


        
4条回答
  •  心在旅途
    2020-12-08 07:42

    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();
    

提交回复
热议问题