MongoDB删除文档的多种方法(附带实例)
如果不再需要 MongoDB 中存储的文档,那么可以通过删除命令将其永久删除。
删除 MongoDB 集合中的数据可以使用 remove() 方法。remove() 方法可以接收一个查询文档作为可选参数,来有选择性地删除符合条件的文档。删除文档是永久性的,这个操作不能撤销,被删除的文档也不能恢复,因此,在执行 remove() 方法前最好先用 find() 方法来查看所删文档是否正确。
remove() 方法的基本语法格式如下:
下面举例来说明集合中文档的删除。首先进行两次插入操作,即执行两次以下代码:
然后使用 find() 方法进行查询,代码如下:
最后移除 title 为 'MongoDB' 的文档。执行后进行查询,会发现两条文档记录均被删除,代码如下:
另外,remove() 方法可以通过设置的比较条件来删除。以下代码展示了删除 price 大于 3 的文档记录:
MongoDB 官方推荐使用 deleteOne() 方法和 deleteMany() 方法来删除文档,例如:
删除 MongoDB 集合中的数据可以使用 remove() 方法。remove() 方法可以接收一个查询文档作为可选参数,来有选择性地删除符合条件的文档。删除文档是永久性的,这个操作不能撤销,被删除的文档也不能恢复,因此,在执行 remove() 方法前最好先用 find() 方法来查看所删文档是否正确。
remove() 方法的基本语法格式如下:
db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } )上述代码中各参数含义如下:
- query 为必选项,可以设置删除的文档的条件;
- justOne 为布尔型可选项,默认值为 false,表示删除符合条件的所有文档;如果值为 true,则表示只删除一个文档。
- writeConcern 为可选项,可以设置抛出异常的级别。
下面举例来说明集合中文档的删除。首先进行两次插入操作,即执行两次以下代码:
> 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 的一个文档。