在 MongoDB 数据库的日常管理与维护中,字段的新增删除、数据的导入导出以及批量清理数据都是高频操作。本文整理了这些实用操作的具体方法,便于开发者日常参考与使用。
一、字段管理操作
1. 批量新增字段
适用场景:需为集合中所有文档统一添加某个字段时,使用 updateMany 配合 $set 操作符,具体语法如下:
// 操作说明:为 user 集合的所有文档新增 status 字段,字段值设为 1
db.user.updateMany(
{}, // 匹配条件:空对象表示匹配集合中所有文档
{ $set: { status: 1 } } // $set 功能:新增字段(若字段已存在则更新值)
);
2. 批量删除字段
适用场景:需从集合所有文档中移除某个无用字段时,使用 updateMany 配合 $unset 操作符,具体语法如下:
// 操作说明:从 user 集合的所有文档中删除 status 字段
db.user.updateMany(
{}, // 匹配条件:空对象表示匹配集合中所有文档
{ $unset: { status: "" } } // $unset 功能:删除指定字段,赋值为空字符串即可
);
二、数据导入与导出
MongoDB 官方提供 mongodump(数据导出工具)和 mongorestore(数据导入工具),用于数据备份与恢复,以下是详细操作步骤:
1. 数据导出(使用 mongodump)
(1)命令格式
./mongodump [数据库连接地址(mongodb:// 开头)] --out [本地导出文件夹路径]
(2)实操示例
# 操作说明:将远程 yunhuiv2 数据库导出到本地 D 盘的 db 文件夹中
./mongodump mongodb://mongo_aliyundev:mongo_4aliyundev@dev.kxxxx.cn:27017/database2?authSource=admin --out D:/db
(3)参数说明
- 数据库连接地址:包含账号(mongo_aliyundev)、密码(mongo_4aliyundev)、主机地址(dev.kxxxx.cn)、端口(27017)、数据库名(database2),authSource=admin 表示认证数据库为 admin;
- --out:指定导出文件在本地的存储路径(示例中为 D:/db)。
2. 数据导入(使用 mongorestore)
支持 “全库导入” 和 “单个集合导入” 两种场景,具体操作如下:
(1)全库导入(导入整个数据库的所有集合)
① 命令格式
./mongorestore [目标数据库连接地址(本地/远程)] [本地导出文件夹路径/数据库名]
② 实操示例
# 操作说明:将本地 D:/db/abc文件夹中的数据,导入到本地 database-dev 数据库
./mongorestore mongodb://localhost:27017/database-dev d:/db/abc
③ 注意事项
建议导入前先创建目标数据库(如示例中的 yunhuiv2-dev),避免因数据库不存在导致导入失败。
(2)单个集合导入(仅导入指定集合)
① 命令格式
./mongorestore [目标数据库连接地址] --collection [目标集合名] [本地 bson 文件路径]
② 实操示例
# 操作说明:仅将本地 admin.bson 文件中的数据,导入到本地 database-dev 数据库的 admin 集合
./mongorestore mongodb://localhost:27017/database-dev --collection admin d:/db/abc/admin.bson
三、批量删除数据
适用场景:需清理集合中符合特定条件的大量文档时,使用 deleteMany 方法,根据查询条件批量删除数据,具体操作如下:
1. 命令格式
db.[集合名].deleteMany({"字段名":"字段值"})
2. 实操示例
// 1. 删除 charge_order_detail_history 集合中 data_source 为 "fromV1.3" 的所有文档
db.charge_order_detail_history.deleteMany({"data_source":"fromV1.3"})
// 2. 删除 charge_order 集合中 data_source 为 "fromV1.3" 的所有文档
db.charge_order.deleteMany({"data_source":"fromV1.3"})
// 3. 删除 order 集合中 data_source 为 "fromV1.3" 的所有文档
db.order.deleteMany({"data_source":"fromV1.3"})
3. 注意事项
- 操作前建议先执行 db.[集合名].find({"字段名":"字段值"}) 确认符合条件的文档数量,避免误删数据;
- deleteMany 执行后无法撤销,生产环境操作需谨慎(建议先备份数据)。
945

被折叠的 条评论
为什么被折叠?



