Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-16071

The nscanned and nscannedObjects is not correct for findAndModify

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Duplicate
    • Affects Version/s: 2.6.5
    • Fix Version/s: None
    • Component/s: Querying, Write Ops
    • Labels:
      None
    • Operating System:
      ALL
    • Steps To Reproduce:
      Hide

      Insert 100 documents to a collection, set logLevel to 1, and then run update and findAndModify command on the same document.

      > db.version()
      2.6.5
      > for (var i=0; i<100; i++) {db.docs.insert({x:i})}
      WriteResult({ "nInserted" : 1 })
      > db.adminCommand({setParameter:1, logLevel:1})
      { "was" : 0, "ok" : 1 }
      > db.docs.update({x:90}, {$set:{y:1}})
      WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
      > db.docs.findAndModify({query:{x:90}, update:{$set:{y:2}}})
      { "_id" : ObjectId("5461a43c0c8835a3ca5e1707"), "x" : 90, "y" : 1 }

      Check the verbose log, the nscanned and nscannedObjects are correct for the update command, however they are wrong for the findAndModify command.

      • Update:

        2014-11-11T16:53:11.048+1100 [conn6] update test.docs query: { x: 90.0 } update: { $set: { y: 1.0 } } nscanned:91 nscannedObjects:91 nMatched:1 nModified:1 keyUpdates:0 numYields:0 locks(micros) w:289 0ms

      • findAndModify

        2014-11-11T16:53:22.528+1100 [conn6] command test.$cmd command: findAndModify { findandmodify: "docs", query: { x: 90.0 }, update: { $set: { y: 2.0 } } } update: { $set: { y: 2.0 } } nscanned:1 nscannedObjects:1 nMatched:1 nModified:1 fastmod:1 keyUpdates:0 numYields:0 locks(micros) w:163 reslen:135 0ms

      Show
      Insert 100 documents to a collection, set logLevel to 1, and then run update and findAndModify command on the same document. > db.version() 2.6.5 > for (var i=0; i<100; i++) {db.docs.insert({x:i})} WriteResult({ "nInserted" : 1 }) > db.adminCommand({setParameter:1, logLevel:1}) { "was" : 0, "ok" : 1 } > db.docs.update({x:90}, {$set:{y:1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.docs.findAndModify({query:{x:90}, update:{$set:{y:2}}}) { "_id" : ObjectId("5461a43c0c8835a3ca5e1707"), "x" : 90, "y" : 1 } Check the verbose log, the nscanned and nscannedObjects are correct for the update command, however they are wrong for the findAndModify command. Update: 2014-11-11T16:53:11.048+1100 [conn6] update test.docs query: { x: 90.0 } update: { $set: { y: 1.0 } } nscanned:91 nscannedObjects:91 nMatched:1 nModified:1 keyUpdates:0 numYields:0 locks(micros) w:289 0ms findAndModify 2014-11-11T16:53:22.528+1100 [conn6] command test.$cmd command: findAndModify { findandmodify: "docs", query: { x: 90.0 }, update: { $set: { y: 2.0 } } } update: { $set: { y: 2.0 } } nscanned:1 nscannedObjects:1 nMatched:1 nModified:1 fastmod:1 keyUpdates:0 numYields:0 locks(micros) w:163 reslen:135 0ms
    • Sprint:
      Quint Iteration 3.1.2, Quint Iteration 3

      Attachments

        Issue Links

          Activity

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: