删除文档
约 330 字大约 1 分钟
布欧-Lewyon
2026-05-15
首页 › MongoDB › CRUD 操作(在新窗口打开) › 删除文档
deleteOne / deleteMany
// 删除第一个匹配的文档
db.users.deleteOne({ status: "inactive" })
// 删除所有匹配的文档
db.users.deleteMany({ status: "inactive" })
// 删除集合中所有文档(保留集合)
db.users.deleteMany({})
// 返回
// { "acknowledged": true, "deletedCount": 5 }drop
// 删除整个集合(包括索引)
db.users.drop()
// 删除数据库
db.dropDatabase()findOneAndDelete
// 删除并返回被删除的文档
db.users.findOneAndDelete({ name: "Alice" })条件删除
// 删除年龄大于 60 的用户
db.users.deleteMany({ age: { $gt: 60 } })
// 删除最后登录时间超过一年的用户
db.users.deleteMany({
lastLogin: { $lt: new Date("2025-01-01") }
})注意事项
deleteMany({})清空集合,速度比drop()慢(逐条删除)。- 生产环境删除大批量数据时,考虑分批删除避免长锁:
// 分批删除(每次 1000 条)
let deleted = 0
while (true) {
const result = db.users.deleteMany(
{ status: "inactive" },
{ limit: 1000 } // mongosh 支持 limit
)
if (result.deletedCount === 0) break
deleted += result.deletedCount
}
print("Deleted:", deleted)小结
deleteOne/deleteMany按条件删除,deleteMany({})清空集合。drop()删除整个集合(更快,但索引也会删除)。findOneAndDelete删除并返回被删文档。- 大批量删除建议分批执行,避免长时间锁表。
dropDatabase()删除整个数据库(谨慎)。
