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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 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
目录
相关文章
|
23小时前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
25 15
|
8天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
1月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
2月前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
23 1
|
11天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
80 15
|
5天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
12天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
16天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
24天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
下一篇
DataWorks