PyMongo 聚合管道操作符指南
PyMongo 聚合管道操作符指南
在 PyMongo 中,聚合管道可以用来处理 MongoDB 中的数据。聚合管道提供多种操作符,可以用来处理和转换数据。以下是一些常用的操作符和它们的介绍。
- $match:
$match 的作用是进行数据筛选,类似于 SQL 中的 WHERE。如果文档符合 $match 中指定的条件,则被选择。
例如,以下命令会选择 pidancode.com 网站中所有年龄大于 18 岁的用户:
db.users.aggregate([
{"$match": {"age": {"$gt": 18}, "website": "pidancode.com"}}
])
- $group:
$group 操作符用来对数据进行分组操作。它的语法如下:
{
$group: {
_id:
...
}
}
$group 操作符中必须指定一个 _id 字段,表示要根据哪一个字段进行分组。然后可以使用多个 accumulator 函数对字段进行计算。
例如,以下命令将 pidancode.com 网站中所有用户按照性别和年龄分组,并统计每个分组中用户的数量:
db.users.aggregate([
{"$match": {"website": "pidancode.com"}},
{"$group": {"_id": {"gender": "$gender", "age": "$age"}, "count": {"$sum": 1}}}
])
- $project:
$project 操作符用于对输出结果进行投影,即指定输出的文档包含哪些字段。
例如,以下命令选择 pidancode.com 网站的所有用户,仅仅包含姓名和电子邮件地址:
db.users.aggregate([
{"$match": {"website": "pidancode.com"}},
{"$project": {"_id": 0, "name": 1, "email": 1}}
])
- $sort:
$sort 操作符用于对数据进行排序。语法如下:
{
$sort: {
}
}
例如,以下命令选择 pidancode.com 网站的所有用户,并按照年龄递减的顺序进行排序:
db.users.aggregate([
{"$match": {"website": "pidancode.com"}},
{"$sort": {"age": -1}}
])
- $limit 和 $skip:
$limit 操作符用于限制返回的文档数量。$skip 操作符用于跳过前面几个文档,然后返回剩下的文档。
例如,以下命令选择 pidancode.com 网站的前 10 个用户:
db.users.aggregate([
{"$match": {"website": "pidancode.com"}},
{"$limit": 10}
])
例如,以下命令选择 pidancode.com 网站的第 11 个到 20 个用户:
db.users.aggregate([
{"$match": {"website": "pidancode.com"}},
{"$skip": 10},
{"$limit": 10}
])
以上是一些常用的聚合管道操作符,使用它们可以轻松地对 MongoDB 数据进行处理。
相关文章