溫馨提示×

MongoDB聚合管道查詢怎樣進行分頁

小樊
83
2024-10-30 15:02:24
欄目: 云計算

在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個文檔。

0