无法“跳过”mongoose子文件

我正在使用mongoose和节点,我试图从分文档分页数据。 我可以限制子文档,但不能跳过它们。

我使用的版本是:

Mongo 3.0.0

节点0.10.33

mongoose3.9.7

数据

[{ "name" : "Ranger Table", "_id" : ObjectId("550234d3d06039d507d238d8"), "body" : [ { "name" : "Jason", "colour" : "Red", "animal" : "T-rex", "_id" : ObjectId("550234d3d06039d507d238de") }, { "name" : "Billy", "colour" : "Blue", "animal" : "Triceratops", "_id" : ObjectId("550234d3d06039d507d238dd") }, { "name" : "Zach", "colour" : "Black", "animal" : "Mastadon", "_id" : ObjectId("550234d3d06039d507d238dc") }, { "name" : "Tommy", "colour" : "Green", "animal" : "Dragon" "_id" : ObjectId("550234d3d06039d507d238d9") } ] },{ "name" : "Bot Table", "_id" : ObjectId("5502d205184cd74033f64e6b"), "body" : [ { "name" : "Optimus", "team" : "Autobots", "class" : "Leader", "_id" : ObjectId("550234d3d06039d507d238d9") }, { "name" : "Bumblebee", "team" : "Autobots", "class" : "Scout", "_id" : ObjectId("550234d3d06039d507d238da") }, { "name" : "Astrotrain", "team" : "Decepticons", "class" : "Transport", "_id" : ObjectId("550234d3d06039d507d238db") } ] }] 

代码

 var BodySchema = new Schema({random: String},{strict:false}); var FeedSchema = new Schema({ name: String, body:[BodySchema] }); var feed = mongoose.model('Feed', FeedSchema); feed.find({_id:'550234d3d06039d507d238d8'}) .populate({ "path":"body", "options":{ limit:2, //This works fine skip:2 //This doesn't work } }) .exec(function(err, result){ if(err){return(res.send(500, err))} res.send(result); }); 

结果上面的代码将“body”子文档的数量限制为2,但不会跳过任何内容。

上面的代码返回这个:

 { "name" : "Ranger Table", "_id" : ObjectId("550234d3d06039d507d238d8"), "body" : [ { "name" : "Jason", "colour" : "Red", "animal" : "T-rex", "_id" : ObjectId("550234d3d06039d507d238de") }, { "name" : "Billy", "colour" : "Blue", "animal" : "Triceratops", "_id" : ObjectId("550234d3d06039d507d238dd") } ] } 

但它应该返回这个:

 { "name" : "Ranger Table", "_id" : ObjectId("550234d3d06039d507d238d8"), "body" : [ { "name" : "Zach", "colour" : "Black", "animal" : "Mastadon", "_id" : ObjectId("550234d3d06039d507d238dc") }, { "name" : "Tommy", "colour" : "Green", "animal" : "Dragon" "_id" : ObjectId("550234d3d06039d507d238d9") } ] } 

我find的解决scheme是使用聚合和$ unwind指定子文档的名称。

http://docs.mongodb.org/manual/reference/operator/aggregation/

 feed.aggregate([ {'$match':{_id:id('550234d3d06039d507d238d8')}}, {'$unwind':'$body'}, {'$skip':2}, {'$limit':2}, ], function(err, result){ if(err){return(res.send(500, err))} res.send(result); });