在MongoDB中,我們可以使用聚合管道(aggregation pipeline)進行分頁。以下是一個簡單的示例,展示了如何使用$match
、$sort
和$skip
以及$limit
操作符進行分頁。
假設我們有一個名為students
的集合,其中包含以下文檔:
[
{ "_id": 1, "name": "Alice", "age": 20 },
{ "_id": 2, "name": "Bob", "age": 22 },
{ "_id": 3, "name": "Cathy", "age": 19 },
{ "_id": 4, "name": "David", "age": 21 },
{ "_id": 5, "name": "Eva", "age": 23 },
{ "_id": 6, "name": "Frank", "age": 24 }
]
現(xiàn)在,我們希望獲取第2頁的數(shù)據(jù),每頁顯示3個文檔。我們可以使用以下聚合管道查詢:
db.students.aggregate([
{
$match: {} // 在這里可以添加篩選條件,如果需要的話
},
{
$sort: { age: 1 } // 根據(jù)年齡升序排序
},
{
$skip: 1 // 跳過第一個文檔(因為索引從0開始)
},
{
$limit: 3 // 限制結果集的大小為3
}
])
這個查詢將返回以下結果:
[
{ "_id": 2, "name": "Bob", "age": 22 },
{ "_id": 4, "name": "David", "age": 21 },
{ "_id": 5, "name": "Eva", "age": 23 }
]
在這個示例中,我們首先使用$match
操作符對文檔進行篩選(這里沒有添加任何篩選條件)。然后,我們使用$sort
操作符根據(jù)年齡升序排序文檔。接下來,我們使用$skip
操作符跳過第一個文檔,最后使用$limit
操作符限制結果集的大小為3。這樣我們就得到了第2頁的數(shù)據(jù),每頁顯示3個文檔。