3、请设计一个 MongoDB 数据库,用于存储校园社团每位成员的基本信息。请使用代码存储至少 5 条成员的文档数据。 1)面对该数据库的内容,设计一个实际问题,并使用管道聚合操作完成。 2)为每一位社团成员的年龄字段(age)建立升序索引。
时间: 2024-10-27 19:04:16 浏览: 30
设计一个名为 `CampusClubs` 的 MongoDB 数据库,其中包含一个集合 `Members`,用于存储每个社团成员的基本信息。以下是五条示例文档:
```json
{
"_id": ObjectId("60abf0c07e9abcde00a0b1c0"),
"name": "张三",
"email": "zhangsan@example.com",
"age": 18,
"position": "社长",
"join_date": ISODate("2022-01-01T00:00:00Z")
}
{
"_id": ObjectId("60abf0c07e9abcde00a0b1c1"),
"name": "李四",
"email": "lisi@example.com",
"age": 19,
"position": "副社长",
"join_date": ISODate("2022-01-02T00:00:00Z")
}
{
"_id": ObjectId("60abf0c07e9abcde00a0b1c2"),
"name": "王五",
"email": "wangwu@example.com",
"age": 20,
"position": "财务",
"join_date": ISODate("2022-01-03T00:00:00Z")
}
{
"_id": ObjectId("60abf0c07e9abcde00a0b1c3"),
"name": "赵六",
"email": "zhaoliu@example.com",
"age": 17,
"position": "宣传委员",
"join_date": ISODate("2022-01-04T00:00:00Z")
}
{
"_id": ObjectId("60abf0c07e9abcde00a0b1c4"),
"name": "孙七",
"email": "sunqi@example.com",
"name": "21",
"position": "技术负责人",
"join_date": ISODate("2022-01-05T00:00:00Z")
}
```
实际问题:找出所有社团成员中加入社团最晚(即 `join_date` 最新)的成员。
使用 pipeline 聚合操作完成:
```javascript
db.Members.aggregate([
{ $sort: { join_date: -1 } }, // 按照加入日期降序排序
{ $limit: 1 } // 取出第一条记录,即最新的加入者
])
```
为 `age` 字段建立升序索引:
```javascript
db.Members.createIndex({ age: 1 }) // 创建升序索引
```
阅读全文