1. 程式人生 > 其它 >pymongo中如何將資料filter並且group後取出若干條?

pymongo中如何將資料filter並且group後取出若干條?

技術標籤:資料庫學習筆記MongoDB

在pymongo中如何將資料filter並且group後取出若干條?

如果我們要在MongoDB查詢分組並獲取TopN資料

資料為

[
  { "name": "劉大", "age": 28, "status": "active" },
  { "name": "陳二", "age": 25, "status": "active" },
  { "name": "張三", "age": 25, "status": "active" },
  { "name": "李四", "age": 25, "status": "active" },
  { "name": "王五", "age": 23, "status": "active" },
  { "name": "趙六", "age": 23, "status": "active" },
  { "name": "孫七", "age": 23, "status": "inactive" },
  { "name": "周八", "age": 23, "status": "active" }
]
db.user.aggregate([
  {
    $match: {
      status: 'active',
    },
  },
  {
    $sort: {
      age: 1,
      createdAt: 1,
    },
  },
  {
    $group: {
      _id: '$age'
      persons: {
        $push: '$$ROOT',
      },
    },
  },
  {
    $project: {
      _id: 0,
      age: "$_id",
      persons: {
        $slice: [
          '$persons',
          2,
        ],
      },
    },
  },
]);
[
  { "name": "王五", "age": 23, "status": "active" },
  { "name": "趙六", "age": 23, "status": "active" },
  { "name": "陳二", "age": 25, "status": "active" },
  { "name": "張三", "age": 25, "status": "active" },
  { "name": "劉大", "age": 28, "status": "active" }
]

但是如果我們要使用filter怎麼辦呢?

我們可以在$project中使用,如下:

參考:

https://blog.csdn.net/ghosind/article/details/109789617