【问题标题】:BSON classes and updates in mongomongo 中的 BSON 类和更新
【发布时间】:2021-07-08 10:10:49
【问题描述】:

我有一个 mongo 集合,并且我已将所有元素定义为 BSON 类。 例如。

_id: 12345 
Person
-> Name
     surname: smith
     forename: john 
-> Address
     number: 1
     street: the street

使用这种读取数据很简单,并且可以很好地在一个类中输出,因此任何消费者都对 mongo 没有任何了解。

现在进行更新,我只想获取一个客户密钥,例如 _id 并更新地址,但传入一个地址类。

所以更新(_id, Address.class)

   updateAccount(String personId, Account account) {
    
       // set up connection to mongo etc...

       // Update record
       Document updDocQuery = new Document("_id", personId);
       Bson update = new Document("$set", address);
       UpdateOptions updateOptions = new UpdateOptions().upsert(true)

       mongoCollection.updateOne(updDocQuery, update, updateOptions);
   }

这可能吗?我玩过,但我似乎无法找到一种方法来确保 mongo 在正确的级别更新集合中的文档,即在“Person”下而不是在顶层。我确定我只是遗漏了一些东西,除非这是一个限制并且我需要以某种方式指定层次结构。

任何指点将不胜感激。

【问题讨论】:

    标签: java mongodb bson upsert


    【解决方案1】:

    我想我已经回答了我自己的问题......但我愿意被纠正。

    我发现我可以使用 Updates.set 传入文档位置;

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

    【讨论】:

      猜你喜欢
      • 2016-07-08
      • 2020-05-02
      • 2012-03-12
      • 2011-03-26
      • 2016-07-25
      • 2011-06-15
      • 1970-01-01
      • 2014-12-06
      • 2020-05-06
      相关资源
      最近更新 更多