MongoDB: WriteResult.getN() always returns 0?

前端 未结 3 2113
隐瞒了意图╮
隐瞒了意图╮ 2021-01-17 12:47

According to the javaDoc, getN() method of WriteResult class in MongoDB-java returns the number of documents updated in the opertion. But it always

3条回答
  •  半阙折子戏
    2021-01-17 13:24

    Note that regardless of what the MongoDB documentation states, the WriteResult.getN() method always returns 0 for insert using the Java driver, regardless of the number of objects inserted. The source code for setting the "n" field in the 2.12.3 of the Java driver:

    if (type == INSERT) {
      commandResult.put("n", 0);
    } else if (type == REMOVE) {
      commandResult.put("n", bulkWriteResult.getRemovedCount());
    } else if (type == UPDATE || type == REPLACE) {
      commandResult.put("n", bulkWriteResult.getMatchedCount() + bulkWriteResult.getUpserts().size());
      if (bulkWriteResult.getMatchedCount() > 0) {
        commandResult.put("updatedExisting", true);
      } else {
        commandResult.put("updatedExisting", false);
      }
      if (!bulkWriteResult.getUpserts().isEmpty()) {
        commandResult.put("upserted", bulkWriteResult.getUpserts().get(0).getId());
      }
    }
    

    But errors are correctly reported via Exceptions. For example, a MongoException will be thrown when inserting a document that violates a unique index, if WriteConcern specified is at least the ACKNOWLEDGED

提交回复
热议问题