mongoDB 查询加入了"舞蹈协会","外联社"的学生姓名、性别、年龄和协会信息【注:必须是先加入"舞蹈协会",后加入"外联社"】
时间: 2023-09-07 14:12:39 浏览: 58
假设学生信息存储在名为"students"的集合中,协会信息存储在名为"associations"的集合中,可以使用以下聚合管道查询加入了"舞蹈协会"和"外联社"的学生信息:
```mongodb
db.students.aggregate([
// 匹配加入了"舞蹈协会"的学生
{ $match: { "associations": "舞蹈协会" } },
// 分组并筛选加入了"外联社"的学生
{
$group: {
_id: "$_id",
name: { $first: "$name" },
gender: { $first: "$gender" },
age: { $first: "$age" },
associations: { $push: "$associations" }
}
},
{ $match: { "associations": { $all: ["舞蹈协会", "外联社"] } } },
// 投影出需要的字段
{
$project: {
_id: 0,
name: 1,
gender: 1,
age: 1,
associations: 1
}
}
])
```
这个聚合管道的具体步骤如下:
1. 使用`$match`筛选出加入了"舞蹈协会"的学生。
2. 使用`$group`分组并筛选出加入了"外联社"的学生,并将学生的姓名、性别、年龄和协会信息保存到分组文档中。
3. 使用`$match`再次筛选出加入了"舞蹈协会"和"外联社"的学生。
4. 使用`$project`投影出需要的字段,即学生的姓名、性别、年龄和协会信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)