Expressjs如何在对象内部进行分页项目?

时间:2016-07-30 08:00:10

标签: node.js mongodb express mongoose pagination

如何限制/分页文档中的对象数组列表

这是我存储在mongoDB中的文档:

{
    "_id" : ObjectId("579639080a0b348a606d85ae"),
    "user_id" : "578899888a73ce23604200a7",
    "title" : "PM2.5",
    "data" : {
        "particles" : [ 
            "1", 
            "2", 
            "3", 
            "4", 
            "5"
        ],
        "timestamp" : [ 
            1469853926953.0, 
            1469853933742.0, 
            1469853937594.0, 
            1469853940779.0, 
            1469853943601.0
        ]
    },
    "created_at" : ISODate("2016-07-25T16:06:32.533Z"),
    "entries_number" : 5,
    "__v" : 0,
    "last_entry_at" : ISODate("2016-07-30T04:45:43.601Z")
}

我知道我可以使用mongoose-paginate限制所有文件:

Model.paginate({}, { page: 3, limit: 10 }, function(err, result) {
  // result.docs
  // result.total
  // result.limit - 10
  // result.page - 3
  // result.pages
});

但我想实际分页/限制data object中的项目:

     "data" : {
        "particles" : [ 
            "1", 
            "2", 
            "3", 
            "4", 
            "5"
        ],
        "timestamp" : [ 
            1469853926953.0, 
            1469853933742.0, 
            1469853937594.0, 
            1469853940779.0, 
            1469853943601.0
        ]
    },

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Model.findOne({},  function(err, result) {
   result.data.particle = result.data.particle.slice(page*limit,page*limit+limit)
});

如果您发布更多代码,可以更新以告知您如何使用多个模型构建它。