mongodb之remove操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb之remove操作相关的知识,希望对你有一定的参考价值。

参考技术A

在上一篇 mongodb基础操作之update更新操作 中详细介绍了常用的字段更新操作符,本篇开始介绍remove 的api详细操作,mongodb remove api操作分为remove、deleteOne、deleteMany三种。

1. remove

说明:从集合中删除文档。

语法:

db.collection.remove(

  ,

 

    justOne: ,

    writeConcern: ,

    collation:

 

)

参数讲解:

query:使用查询操作符指定删除条件。要删除集合中的所有文档,传递一个空文档()。

justOne:可选的。若要仅删除一个文档,请设置为true。省略使用缺省值false并删除所有匹配删除标准的文档。

writeConcern:可选的。表达写作关注的文件。忽略使用默认的写关注点。如果在事务中运行,请不要显式设置操作的写关注。要对事务使用write concern,。

collation:可选的。指定操作要使用的排序规则。

排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号的规则。

排序选项有以下语法:

1.1. 示例

db.articles.remove("views":$gt:4,true)

db.articles.remove()

2. deleteOne

说明:

从集合中移除单个文档。

语法:

db.collection.deleteOne(

  ,

 

      writeConcern: ,

      collation: ,

      hint:        // 在MongoDB 4.4中可用

 

)

参数讲解:

filter:使用查询操作符指定删除条件。指定一个空文档来删除集合中返回的第一个文档。

writeConcern:可选的。表达写作关注的文件。忽略使用默认的写关注点。如果在事务中运行,请不要显式设置操作的写关注。要对事务使用write concern,

collation:可选的。指定操作要使用的排序规则。排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号的规则。

hint:可选的。指定操作要使用的排序规则。排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号的规则。指定用于支持查询谓词的索引的文档或字符串。

2.1. 示例

db.orders.deleteOne( "_id" : ObjectId("563237a41a4d68582c2509da") );

3. db.collection.deleteMany()

说明:

从集合中删除与筛选器匹配的所有文档。

语法:

db.collection.deleteMany(

  ,

 

      writeConcern: ,

      collation:

 

)

参数讲解:

filter:使用查询操作符指定删除条件。指定一个空文档来删除集合中返回的第一个文档。

writeConcern:可选的。表达写作关注的文件。忽略使用默认的写关注点。如果在事务中运行,请不要显式设置操作的写关注。要对事务使用write concern,

collation:可选的。指定操作要使用的排序规则。排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号的规则。

hint:可选的。指定操作要使用的排序规则。排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号的规则。指定用于支持查询谓词的索引的文档或字符串,4.4新版功能。

3.1. 示例

db.students.deleteMany("_id":$in:[1,2])

4. 小技巧提取ObjectId的时间戳

ObjectId("5fe3082595b782487444fa0f").getTimestamp()

返回结果:

ISODate("2020-12-23T09:04:37Z")

MongoDB CRUD之D

文档删除

命令 操作
db.collection.deleteOne() 即使多个文档可能匹配指定的过滤器,也要删除与指定筛选器匹配的单个文档。
db.collection.deleteMany() 删除匹配指定过滤器的所有文档。
db.collection.remove() 删除单个文档或匹配指定筛选器的所有文档

其他的可以参考这里

deleteOne

格式

db.collection.deleteOne(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)

删除与筛选器匹配的第一个文档。用于 capped collection 时会抛出一个WriteError异常。

> db.orders.find().pretty()
{
    "_id" : ObjectId("563237a41a4d68582c2509da"),
    "stock" : "Brent Crude Futures",
    "qty" : 250,
    "type" : "buy-limit",
    "limit" : 48.9,
    "creationts" : ISODate("2015-11-01T12:30:15Z"),
    "expiryts" : ISODate("2015-11-01T12:35:15Z"),
    "client" : "Crude Traders Inc."
}
> try {
...    db.orders.deleteOne( { "_id" : ObjectId("563237a41a4d68582c2509da") } );
... } catch (e) {
...    print(e);
... }
{ "acknowledged" : true, "deletedCount" : 1 }
> db.orders.find().pretty()
>

删除日期比较早的

> db.orders.find().pretty()
{
    "_id" : ObjectId("563237a41a4d68582c2509da"),
    "stock" : "Brent Crude Futures",
    "qty" : 250,
    "type" : "buy-limit",
    "limit" : 48.9,
    "creationts" : ISODate("2015-11-01T12:30:15Z"),
    "expiryts" : ISODate("2015-11-01T12:35:15Z"),
    "client" : "Crude Traders Inc."
}
> try {
...    db.orders.deleteOne( { "expiryts" : { $lt: ISODate("2015-11-01T12:40:15Z") } } );
... } catch (e) {
...    print(e);
... }
{ "acknowledged" : true, "deletedCount" : 1 }
> db.orders.find().pretty()
> 

deleteMany

格式

db.collection.deleteMany(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)

用于 capped collection 时会抛出一个WriteError异常。

> db.orders.find().pretty()
{
    "_id" : ObjectId("563237a41a4d68582c2509da"),
    "stock" : "Brent Crude Futures",
    "qty" : 250,
    "type" : "buy-limit",
    "limit" : 48.9,
    "creationts" : ISODate("2015-11-01T12:30:15Z"),
    "expiryts" : ISODate("2015-11-01T12:35:15Z"),
    "client" : "Crude Traders Inc."
}
> try {
...    db.orders.deleteMany( { "client" : "Crude Traders Inc." } );
... } catch (e) {
...    print (e);
... }
{ "acknowledged" : true, "deletedCount" : 1 }
> db.orders.find().pretty()
>

其实跟deleteOne差不多

remove

格式

db.collection.remove(
   <query>,
   <justOne>
)

从集合中删除所有文档

> db.bios.find().count()
10
> db.bios.remove( { } )
WriteResult({ "nRemoved" : 10 })
> db.bios.find().count()
0

删除匹配条件的所有文档

> db.products.remove( { qty: { $gt: 20 } } )
> db.products.find( { qty: { $gt: 20 } } ).count()
0

使用参数justOne删除一条

> db.products.remove( { qty: { $gt: 20 } }, true )
> db.products.find( { qty: { $gt: 20 } } ).count()
10

以上是关于mongodb之remove操作的主要内容,如果未能解决你的问题,请参考以下文章

mongodb的基本操作之数据删除

mongoDB4--mongoDB的增删改查

MongoDB——文档操作(删除文档)

MongoDB——文档操作(删除文档)

MongoDB CRUD之D

MongoDB增删改查操作详解