MST

星途 面试题库

面试题:MongoDB固定集合的容量与文档数量控制

假设你正在使用MongoDB固定集合处理实时传感器数据,每个数据文档大小约1KB,你希望固定集合最多存储1GB数据或者100万个文档,达到任一条件时新数据覆盖旧数据。请描述如何配置该固定集合,并说明如果在运行过程中需要调整存储上限,应如何操作。
43.2万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

配置固定集合

在MongoDB中,可以使用以下方法创建满足要求的固定集合:

  1. 使用create命令
db.runCommand({
    create: "sensorData",
    capped: true,
    size: 1024 * 1024 * 1024, // 1GB,单位为字节
    max: 1000000
});

这里,create指定要创建的集合名称为sensorDatacapped设置为true表示这是一个固定集合。size指定了集合的最大空间为1GB(1024 * 1024 * 1024字节),max指定了集合最多能存储100万个文档。

调整存储上限

如果在运行过程中需要调整存储上限,由于固定集合的大小和最大文档数在创建后不能直接修改,一般的做法是:

  1. 备份数据: 可以使用mongoexport工具将当前固定集合中的数据导出到文件中。例如:
mongoexport --uri="mongodb://localhost:27017" --collection=sensorData --out=sensorData_backup.json
  1. 删除原集合: 在MongoDB shell中执行删除集合操作:
db.sensorData.drop();
  1. 创建新集合: 根据新的存储上限要求,使用create命令创建新的固定集合,例如,如果要将存储上限调整为2GB和200万个文档:
db.runCommand({
    create: "sensorData",
    capped: true,
    size: 2 * 1024 * 1024 * 1024, // 2GB,单位为字节
    max: 2000000
});
  1. 恢复数据: 使用mongoimport工具将备份的数据导入到新创建的集合中:
mongoimport --uri="mongodb://localhost:27017" --collection=sensorData --file=sensorData_backup.json