使用mongodb查询对于年龄age>40的教师,显示各个部门的姓名,并统计每组人数
时间: 2024-03-17 20:41:56 浏览: 75
Thinkphp使用mongodb数据库实现多条件查询方法
可以使用 MongoDB 的聚合(aggregation)框架完成该查询。以下是一个可能的查询语句:
```
db.teachers.aggregate([
// 匹配年龄大于40的教师
{ $match: { age: { $gt: 40 } } },
// 按部门分组
{ $group: { _id: "$department", count: { $sum: 1 }, names: { $push: "$name" } } },
// 投影出部门、人数和姓名字段
{ $project: { _id: 0, department: "$_id", count: 1, names: 1 } }
])
```
解释一下上述查询语句:
- `db.teachers` 表示要查询的集合(collection)名为 "teachers"。
- `$match` 阶段用来筛选出年龄大于40的教师。
- `$group` 阶段按部门分组,并使用 `$sum` 累计每个组的人数,使用 `$push` 将每个组的姓名收集在一个数组中。
- `$project` 阶段用来投影出部门、人数和姓名三个字段,同时去掉 `_id` 字段(因为我们不需要这个字段)。
如果你运行上述查询语句,应该可以得到一个类似如下的结果:
```
{ "department" : "Math", "count" : 2, "names" : [ "Tom", "Jane" ] }
{ "department" : "Physics", "count" : 3, "names" : [ "Bob", "Alice", "David" ] }
{ "department" : "Chemistry", "count" : 1, "names" : [ "Mary" ] }
```
这个结果表示,年龄大于40的教师中,数学系有2个人(分别叫 Tom 和 Jane),物理系有3个人(分别叫 Bob、Alice 和 David),化学系有1个人(叫 Mary)。
阅读全文