更新 spring mongodb 中的对象列表

Update a list of objects in spring mongodb

在下面的代码中,我想自动生成 addrId 并将其显示在 Person 文档中,但是 addrId 没有显示在文档中。

@Document
public class Person {
    
  @Id
  String id;

  List<Address> addresses;
        
 }    

public class Address {
    
    @Id
    String addrId;

    String street;
  }    


public class Example {
    
    public Person createAddress(Person person, Address addr) {
            Set<Address> addresses = new HashSet<>();
            addresses.add(addr);

    
            Query query = new Query();
            query.addCriteria(Criteria.where("id").is(id));
            Person person = mongoTemplate.findOne(query, Person.class);
            person.setAddresses(addresses);
    
            return mongoTemplate.save(person);
        }
    }

addrId 为预期文档:

{
  "_id" : ObjectId("592c7029aafef820f432c5f3"),
  "_class" : "tutorial.mongodb.documents.Person",
  "addresses" : [{
    "addrId" : ObjectId("321c7029aafed220f432d321"),
    "street" : "London street"
  }]
} 

但 addrId 未显示,如下面的文档所示:

{
      "_id" : ObjectId("592c7029aafef820f432c5f3"),
      "_class" : "tutorial.mongodb.documents.Person",
      "addresses" : [{
        "street" : "London street"
      }]
    }

这符合我的预期:

 public String createAddress(Person person, Address addr) {

        addr.setAddrId(String.valueOf(UUID.randomUUID()));

        List<Address > addrs = person.getAddresses();
        addrs.add(addr);

        person.setAddresses(addrs);
        
        mongoTemplate.save(person);

        return addr.getAddrId();
    }