首页 > 编程笔记 > MySQL笔记 阅读:6

MongoDB删除文档的多种方法(附带实例)

如果不再需要 MongoDB 中存储的文档,那么可以通过删除命令将其永久删除。

删除 MongoDB 集合中的数据可以使用 remove() 方法。remove() 方法可以接收一个查询文档作为可选参数,来有选择性地删除符合条件的文档。删除文档是永久性的,这个操作不能撤销,被删除的文档也不能恢复,因此,在执行 remove() 方法前最好先用 find() 方法来查看所删文档是否正确。

remove() 方法的基本语法格式如下:
db.collection.remove(
    <query>,
    {
        justOne: <boolean>, writeConcern: <document>
    }
)
上述代码中各参数含义如下:
下面举例来说明集合中文档的删除。首先进行两次插入操作,即执行两次以下代码:
> db.test.insert(
    {
        title: 'MongoDB ',
        description: 'MongoDB 是一个 NoSQL 数据库’,
        by: ’瑞翼教育’,
        tags: ['MongoDB', 'database', 'NoSQL'],
        likes: 100
    }
)

然后使用 find() 方法进行查询,代码如下:
> db.test.find()
{"_id": ObjectId("5ba9d8b124857a5fefc1fde6"),
"title": "MongoDB ",
"description": "MongoDB 是一个 NoSQL 数据库",
"by": "瑞翼教育",
"tags":[ "MongoDB", "database", "NoSQL" ],
"likes": 100 }
{"_id": ObjectId("5ba9d90924857a5fefc1fde7"),
"title": "MongoDB ",
"description": "MongoDB 是一个 NoSQL 数据库",
"by": "瑞翼教育",
"tags": [ "MongoDB", "database", "NoSQL" ],
"likes": 100 }

最后移除 title 为 'MongoDB' 的文档。执行后进行查询,会发现两条文档记录均被删除,代码如下:
> db.test.remove({'title':'MongoDB '})
WriteResult({ "nRemoved": 2 })     # 删除了两条文档记录

另外,remove() 方法可以通过设置的比较条件来删除。以下代码展示了删除 price 大于 3 的文档记录:
> db.test.remove(
    {
        price:{$gt:3}
    }
)

MongoDB 官方推荐使用 deleteOne() 方法和 deleteMany() 方法来删除文档,例如:
db.collection.deleteMany({})
db.collection.deleteMany({ status: "A" })
db.collection.deleteOne({ status: "D" })
在上述代码中,第一条语句删除集合中的所有文档,第二条语句删除 status 为 A 的全部文档,第三条语句删除 status 为 D 的一个文档。

相关文章