-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: 2.6.11, 3.0.7, 3.2.0
-
Component/s: Diagnostics, Write Ops
-
None
-
Fully Compatible
-
ALL
-
Query F (02/01/16)
Consider an update operation with the {upsert: true} flag whose query predicate does not match any of the documents in the collection:
db.setLogLevel(1);
db.c.drop();
db.c.insert({a: 1});
db.c.update({a: 2}, {$set: {b: 1}}, {upsert: true});
This update operation does not match any documents, nor does it modify any existing documents, but in nonetheless generates the following log line:
2015-12-09T14:06:02.569-0500 I WRITE [conn1] update test.c query: { a: 2.0 } update: { $set: { b: 1.0 } } keysExamined:0 docsExamined:1 nMatched:1 nModified:1 upsert:1 keyUpdates:0 writeConflicts:0 numYields:0 locks:{ Global: { acquireCount: { r: 1, w: 1 } }, Database: { acquireCount: { w: 1 } }, Collection: { acquireCount: { w: 1 } } } 0ms
Instead of nMatched:1 and nModified:1 this should report nMatched:0 and nModified:0. This applies to both update and findAndModify for both the log and the profile collection.