Mongodb Nodejs中的分页

时间:2017-07-28 10:31:34

标签: node.js mongodb pagination

是否有任何方法可以在查找操作中获取文档的总数以及MongoDB中查询中的跳过和限制

 MongoClient.connect(Config.dbURI, function (err, db) {
    if (!err) {
        console.log("We are connected");
        console.log(uniqueId)
        db.collection(dbName).find({'uniqueId': uniqueId, 'isDeleted': false})
            .sort({modifiedDateISO: -1})
            .limit(parseInt(limit))
            .skip(parseInt(limit * page))
            .toArray((errFindChat, dataFindChat) => {

                           console.log(errFindChat, dataFindChat);

     });
});

3 个答案:

答案 0 :(得分:0)

如果您使用.find,则无法使用跳过和限制进行过滤,并且只有一个请求中的总计数。

如果您只想在一个请求中检索文档,过滤和执行计数操作,则必须使用aggregate

db.coll.aggregate([
{$match: your find conditions},
{$group/project: your count operations, etc....},
{$skip: skip}, // pagination skip
{$limit: limit}, // pagination limit
...
]);

答案 1 :(得分:0)

string dllFolder = "<somewhere>";

string path = Environment.GetEnvironmentVariable("PATH");
Environment.SetEnvironmentVariable("PATH", dllFolder + ";" + path);

mongoose-pagination很好

答案 2 :(得分:0)

我认为“uniqueId”不是主键!

MongoClient.connect(Config.dbURI, function (err, db) {
   if (!err) {
       console.log("We are connected");
       console.log(uniqueId)
       db.collection("collname").aggregate(
            [
              { "$match":  { "uniqueId": uniqueId, 'isDeleted': false} },
              { "$count":  "total" }, 
              { "$sort" :  {"modifiedDateISO": -1 },
              { "$limit":  parseInt(limit) },
              { "$skip" :  parseInt(limit * page) }  
            ]

        ).toArray((errFindChat, dataFindChat) => {
              console.log(errFindChat, dataFindChat);
           });
    }
});

MongoDB Aggregate Count