MongoDB 常用操作指南:字段管理、数据导入导出及批量删除

在 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 执行后无法撤销,生产环境操作需谨慎(建议先备份数据)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值