mongodb 分组 分页
时间: 2023-07-04 18:30:15 浏览: 99
mongodb分组
要实现 MongoDB 的分组分页功能,可以使用 MongoDB 的聚合(Aggregation)框架来完成。
首先需要使用 $group 操作符对数据进行分组,然后使用 $skip 和 $limit 操作符进行分页操作。
例如,假设有一个名为 orders 的集合,其中包含以下数据:
```
{
"_id": ObjectId("60e7c6c8a7e3e66b84a8e9a8"),
"customer": "Alice",
"product": "A",
"quantity": 2,
"price": 10
},
{
"_id": ObjectId("60e7c6c8a7e3e66b84a8e9a9"),
"customer": "Bob",
"product": "B",
"quantity": 1,
"price": 20
},
{
"_id": ObjectId("60e7c6c8a7e3e66b84a8e9aa"),
"customer": "Alice",
"product": "C",
"quantity": 3,
"price": 15
},
{
"_id": ObjectId("60e7c6c8a7e3e66b84a8e9ab"),
"customer": "Charlie",
"product": "A",
"quantity": 1,
"price": 10
},
{
"_id": ObjectId("60e7c6c8a7e3e66b84a8e9ac"),
"customer": "Charlie",
"product": "B",
"quantity": 2,
"price": 20
}
```
下面是对数据进行分组和分页的代码示例:
```
db.orders.aggregate([
{
$group: {
_id: "$customer",
total: { $sum: { $multiply: ["$quantity", "$price"] } }
}
},
{ $sort: { total: -1 } },
{ $skip: 0 },
{ $limit: 2 }
])
```
这个聚合操作将会按照顾客进行分组,并计算每个顾客的订单总金额(quantity * price)。之后按照订单总金额进行降序排序,并跳过前 0 个结果,最后限制结果数量为 2 个。
结果如下:
```
{ "_id" : "Alice", "total" : 50 }
{ "_id" : "Charlie", "total" : 50 }
```
这个结果表示 Alice 和 Charlie 的订单总金额都是 50 元。
阅读全文