diff --git a/package.json b/package.json index 4cc061e6bb0..2d30486e286 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "mpath": "0.1.1", "kareem": "1.0.0", "regexp-clone": "0.0.1", - "mquery" : "1.0.0", + "mquery" : "1.4.0", "async": "0.9.0" }, "devDependencies": { diff --git a/test/model.populate.test.js b/test/model.populate.test.js index 6dbf3eea284..6c741e2e801 100644 --- a/test/model.populate.test.js +++ b/test/model.populate.test.js @@ -2836,4 +2836,33 @@ describe('model: populate:', function(){ }); }); }); + + it('handles slice (gh-1934)', function(done) { + var db = start(); + + var movieSchema = new Schema({ title: String, actors: [String] }); + var categorySchema = new Schema({ movies: [{ type: ObjectId, ref: 'gh-1934-1' }] }); + + var Movie = db.model('gh-1934-1', movieSchema); + var Category = db.model('gh-1934-2', categorySchema); + var movies = [ + { title: 'Rush', actors: ['Chris Hemsworth', 'Daniel Bruhl'] }, + { title: 'Pacific Rim', actors: ['Charlie Hunnam', 'Idris Elba'] }, + { title: 'Man of Steel', actors: ['Henry Cavill', 'Amy Adams'] } + ]; + Movie.create(movies, function(error, m1, m2, m3) { + assert.ifError(error); + Category.create({ movies: [m1._id, m2._id, m3._id] }, function(error) { + assert.ifError(error); + Category.findOne({}).populate({ path: 'movies', options: { slice: { actors: 1 } } }).exec(function(error, category) { + assert.ifError(error); + assert.equal(category.movies.length, 3); + assert.equal(category.movies[0].actors.length, 1); + assert.equal(category.movies[1].actors.length, 1); + assert.equal(category.movies[2].actors.length, 1); + done(); + }); + }); + }); + }); });