pymongo中如何將資料filter並且group後取出若干條?
阿新 • • 發佈:2021-01-04
在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中使用,如下:
參考: