bson类和更新

yizd12fk  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(379)

我有一个mongo集合,并将所有元素定义为bson类。如。

  1. _id: 12345
  2. Person
  3. -> Name
  4. surname: smith
  5. forename: john
  6. -> Address
  7. number: 1
  8. street: the street

使用这种方法读取数据非常简单,并且可以在一个类中很好地输出数据,因此任何消费者都不会对mongo一无所知。
现在,对于更新,我只想接收一个客户密钥,例如_id并更新地址,但要传入一个address类。
so更新(_id,address.class)

  1. updateAccount(String personId, Account account) {
  2. // set up connection to mongo etc...
  3. // Update record
  4. Document updDocQuery = new Document("_id", personId);
  5. Bson update = new Document("$set", address);
  6. UpdateOptions updateOptions = new UpdateOptions().upsert(true)
  7. mongoCollection.updateOne(updDocQuery, update, updateOptions);
  8. }

这可能吗?我已经尝试过了,但是我似乎找不到一种方法来确保mongo以正确的级别更新集合中的文档,即在“person”下而不是在顶层。我确信我只是缺少了一些东西,除非这是一个限制,我需要以某种方式指定层次结构。
任何指点都将受到感激。

avwztpqn

avwztpqn1#

我想我已经回答了我自己的问题…但我会被纠正的。
我发现我可以使用updates.set传入文档位置;

  1. mongoCollection.updateOne(documentId, Updates.set("Person.Address", address));

相关问题