An update operation with an empty $push and an empty $each on an empty array gets reported as nModified = 1 on MongoDB 3.4, even though no documents have been modified.
The command result on 3.6 seems to be more correct.
There's no difference between the behavior of the command on 3.6 and previous versions.
> db.test.find() { "_id" : ObjectId("59fc96b0721d164cc5a90500"), "x" : [ ] } // 3.4 > db.test.update({},{$push:{x:{$each:[]}}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) // 3.6 > db.test.update({},{$push:{x:{$each:[]}}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })