代码之家  ›  专栏  ›  技术社区  ›  Naman

如何使用mongodb[duplicate]在单个查询中更新一个值并增加另一个值

  •  1
  • Naman  · 技术社区  · 6 年前

    有没有办法实现以下内容:-

    MyDocument {
        String docId;
        Integer bal;
        Set<String> actions;
    }
    
    1. [a1, a2]
      

      [a1, a2, a3]
      
    2. bal 所以我需要确保 $inc 也为 字段。


    单程 平衡 使用一个更新查询:

    Bson searchFilter = Filters.in("docId", <someId>);
    
    // couldn't find a cleaner way of increment in mongo-java
    BasicDBObject modifiedObject = new BasicDBObject();
    modifiedObject.put("$inc", new BasicDBObject().append("bal",2)); // any value to increment
    
    mongoCollection.updateOne(searchFilter, modifiedObject);
    

    此后,我可以对 actions 更新。


    可能是用这两个字段更新了文档。其中:

    • 我不得不这么做 find ,在应用程序上执行计算。
    • 那么 update 包含两个计算字段的文档。

    在上述两种方法中,我都无法避免查询数据库两次。目前是否有其他解决方法可以实现这一点?

    同时,我也关心原子性与上述组合的关系 [UPDATE + UPDATE] [GET + UPDATE]

    如果需要进一步的细节,一定要告诉我。

    0 回复  |  直到 6 年前