MongoDB数据库【基本语法内容】2

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 6.更新文档update() 方法用于更新已存在的文档。语法格式如下:


6.更新文档


update() 方法用于更新已存在的文档。语法格式如下:


db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)


参数说明:


query : update的查询条件,类似sql update查询内where后面的。

update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的

upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

writeConcern :可选,抛出异常的级别。

实例:


> db.col.find()
{ "_id" : ObjectId("624d494650efad6d204d9534"), "title" : "IMUSTCTF", "des" : "CTF练习平台", "url" : "http://imsutctf.top", "cnt" : 521, "lan" : [ "python", "django", "mysql" ] }
> db.col.update({'title':'IMUSTCTF'},{$set:{'title':'内蒙古科技大学CTF平台'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.col.find().pretty()
{
        "_id" : ObjectId("624d494650efad6d204d9534"),
        "title" : "内蒙古科技大学CTF平台",
        "des" : "CTF练习平台",
        "url" : "http://imsutctf.top",
        "cnt" : 521,
        "lan" : [
                "python",
                "django",
                "mysql"
        ]
}
>


以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true


>db.col.update({'title':'xxx'},{$set:{'title':'xxx'}},{multi:true})


7.删除文档


MongoDB remove() 函数是用来移除集合中的数据。


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


参数说明:

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值
    false,则删除所有匹配条件的文档。
  • writeConcern :(可选)抛出异常的级别。


实例:


> db.col.find()
{ "_id" : ObjectId("624d494650efad6d204d9534"), "title" : "内蒙古科技大学CTF平台", "des" : "CTF练习平台", "url" : "http://imsutctf.top", "cnt" : 521, "lan" : [ "python", "django", "mysql" ] }
{ "_id" : ObjectId("624d4c9789f6eeeadb01f086"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
> db.col.remove({'title':'MongoDB 教程'})
WriteResult({ "nRemoved" : 1 })
> db.col.find()
{ "_id" : ObjectId("624d494650efad6d204d9534"), "title" : "内蒙古科技大学CTF平台", "des" : "CTF练习平台", "url" : "http://imsutctf.top", "cnt" : 521, "lan" : [ "python", "django", "mysql" ] }
>


如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):


>db.col.remove({})
>db.col.find()
>


remove() 方法已经过时了,现在官方推荐使用 deleteOne()deleteMany() 方法

如删除集合下全部文档:


db.inventory.deleteMany({})


删除 status 等于 A 的全部文档:


db.inventory.deleteMany({ status : "A" })


删除 status 等于 D 的一个文档:


db.inventory.deleteOne( { status: "D" } )


8.查询文档


MongoDB 查询文档使用 find() 方法。

find() 方法以非结构化的方式来显示所有文档

MongoDB 查询数据的语法格式如下:


db.collection.find(query, projection)


  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:


db.col.find().pretty()
• 1

除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档😎


9.条件操作符


MongoDB 与 RDBMS Where 语句比较



实例:


> db.col.find({"title":"内蒙古科技大学CTF平台"}).pretty()
{
        "_id" : ObjectId("624d494650efad6d204d9534"),
        "title" : "内蒙古科技大学CTF平台",
        "des" : "CTF练习平台",
        "url" : "http://imsutctf.top",
        "cnt" : 521,
        "lan" : [
                "python",
                "django",
                "mysql"
        ]
}
> db.col.find({"cnt":{$lte:521}}).pretty()
{
        "_id" : ObjectId("624d494650efad6d204d9534"),
        "title" : "内蒙古科技大学CTF平台",
        "des" : "CTF练习平台",
        "url" : "http://imsutctf.top",
        "cnt" : 521,
        "lan" : [
                "python",
                "django",
                "mysql"
        ]
}


AND 条件


MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。


语法格式如下:


db.col.find({key1:value1, key2:value2}).pretty()


实例:


> db.col.find({title:"内蒙古科技大学CTF平台",cnt:521}).pretty()
{
        "_id" : ObjectId("624d494650efad6d204d9534"),
        "title" : "内蒙古科技大学CTF平台",
        "des" : "CTF练习平台",
        "url" : "http://imsutctf.top",
        "cnt" : 521,
        "lan" : [
                "python",
                "django",
                "mysql"
        ]
}


OR 条件


MongoDB OR 条件语句使用了关键字 $or,语法格式如下:


db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()


实例:


> db.col.find({$or:[{"cnt":521},{"title":"ACM"}]}).pretty()
{
        "_id" : ObjectId("624d494650efad6d204d9534"),
        "title" : "内蒙古科技大学CTF平台",
        "des" : "CTF练习平台",
        "url" : "http://imsutctf.top",
        "cnt" : 521,
        "lan" : [
                "python",
                "django",
                "mysql"
        ]
}


AND 和 OR 联合使用


以下实例演示了 AND 和 OR 联合使用,类似常规 SQL 语句为: ‘where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')’


db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
{
        "_id" : ObjectId("56063f17ade2f21f36b03133"),
        "title" : "MongoDB 教程",
        "description" : "MongoDB 是一个 Nosql 数据库",
        "by" : "菜鸟教程",
        "url" : "http://www.runoob.com",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}


$type 实例


如果想获取 “col” 集合中 title 为 String 的数据,你可以使用以下命令:


db.col.find({"title" : {$type : 2}})
db.col.find({"title" : {$type : 'string'}})
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
10天前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第一篇(SQL通用语法与分类)
MySQL数据库基础第一篇(SQL通用语法与分类)
|
10天前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
24 0
|
16天前
|
存储 JSON NoSQL
【文档数据库】ES和MongoDB的对比
【文档数据库】ES和MongoDB的对比
91 1
|
18天前
|
关系型数据库 数据库 PostgreSQL
PostgreSQL数据库的字符串拼接语法使用说明
【6月更文挑战第11天】PostgreSQL数据库的字符串拼接语法使用说明
37 1
|
1天前
|
NoSQL Java MongoDB
如何在Spring Boot应用中集成MongoDB数据库
如何在Spring Boot应用中集成MongoDB数据库
|
4天前
|
SQL Apache 数据库
doris数据库的表重命名语法是什么
【6月更文挑战第24天】doris数据库的表重命名语法是什么
30 0
|
5天前
|
NoSQL Java 关系型数据库
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
25 0
|
21天前
|
NoSQL JavaScript 安全
精心操作MongoDB:删除数据库的关键步骤和重要事项
精心操作MongoDB:删除数据库的关键步骤和重要事项
|
2天前
|
SQL 运维 关系型数据库
|
2天前
|
存储 关系型数据库 MySQL

热门文章

最新文章