Skip to content

Commit ecaac84

Browse files
committed
JAVA-1287: Set WriteResult.updateOfExisting based only on BulkWriteResult.matchedCount
1 parent 9a55549 commit ecaac84

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/main/com/mongodb/DBCollectionImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,10 +323,12 @@ private void addBulkWriteResultToCommandResult(final BulkWriteResult bulkWriteRe
323323
commandResult.put("n", bulkWriteResult.getRemovedCount());
324324
} else if (type == UPDATE || type == REPLACE) {
325325
commandResult.put("n", bulkWriteResult.getMatchedCount() + bulkWriteResult.getUpserts().size());
326-
if (bulkWriteResult.getUpserts().isEmpty()) {
326+
if (bulkWriteResult.getMatchedCount() > 0) {
327327
commandResult.put("updatedExisting", true);
328328
} else {
329329
commandResult.put("updatedExisting", false);
330+
}
331+
if (!bulkWriteResult.getUpserts().isEmpty()) {
330332
commandResult.put("upserted", bulkWriteResult.getUpserts().get(0).getId());
331333
}
332334
}

src/test/com/mongodb/JavaClientTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -943,6 +943,15 @@ public void testWriteResultOnUpdate(){
943943
assertFalse(res.isLazy());
944944
}
945945

946+
@Test
947+
public void testWriteResultOnUpdateWhenNoDocumentsMatch(){
948+
WriteResult res = collection.update(new BasicDBObject("_id", 1), new BasicDBObject("$inc", new BasicDBObject("x", 1)));
949+
assertEquals(0, res.getN());
950+
assertFalse(res.isUpdateOfExisting());
951+
assertNull(res.getUpsertedId());
952+
assertFalse(res.isLazy());
953+
}
954+
946955
@Test
947956
public void testWriteResultOnUpsert(){
948957
ObjectId id = new ObjectId();

0 commit comments

Comments
 (0)