diff --git a/lib/model.js b/lib/model.js index cc961a3c515..543e05a1307 100644 --- a/lib/model.js +++ b/lib/model.js @@ -3261,7 +3261,9 @@ function populate(model, docs, options, callback) { mod.options.options.limit = mod.options.options.limit * ids.length; } - var subPopulate = mod.options.populate; + var subPopulate = utils.clone(mod.options.populate, { + retainKeyOrder: true + }); var query = mod.Model.find(match, select, mod.options.options); // If we're doing virtual populate and projection is inclusive and foreign