在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中使用,如下:
