百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

教你用Python、Nodejs连接MongoDB数据库(附程序)

mhr18 2025-02-11 12:44 20 浏览 0 评论

各位同学,大家好。前面课程教大家使用Python、Nodejs连接MySQL数据库,本次课程教大家使用Python、Nodejs连接MongoDB数据库,并进行常见的数据操作。

01 MongoDB数据库基本操作介绍

NoSQL数据库介绍

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。

NoSQL数据库分类

键值(Key-Value)存储数据库

这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果数据库管理员(DBA)只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。

列存储数据库

这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak。

文档型数据库

文档型数据库是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。如:CouchDB, MongoDB。国内也有文档型数据库SequoiaDB,已经开源。

图形(Graph)数据库

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph。

MongoDB数据库介绍

MongoDB 是免费开源的跨平台 NoSQL 数据库,命名源于英文单词 humongous,意思是“巨大无比”,可见开发组对 MongoDB 的定位。与关系型数据库不同,MongoDB 的数据以类似于 JSON 格式的二进制文档存储:

MongoDB 高性能,高可用性、可扩展性等特点,使其至 2009 年发布以来,逐渐被认可,并被越来越多的用于生产环境中。

MongoDB 的存储结构只是名称上区别于传统的关系型数据库,实际上类似mysql的结构化存储。主要由如下三个单元组成:

文档(Document) :MongoDB 中最基本的单元,由 BSON 键值对(key-value)组成,类似于关系型数据库中的行(Row)。

集合(Collection) :一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。

数据库(Database) :一个数据库中可以包含多个集合,可以在 MongoDB 中创建多个数据库,类似于关系型数据库中的数据库(Database)。

也就是说,MongoDB 将数据记录存储为文档 (更具体来说是BSON 文档),这些文档在集合中聚集在一起,数据库中存储一个或多个文档集合。

SQL 与 MongoDB 常见术语对比是这样的 :

MongoDB数据库的增删改查

创建(Create)

MongoDB 提供 insert 方法创建新文档:

db.collection.inserOne() 插入单个文档

db.collection.inserMany() 插入多个文档

db.collection.insert() 插入单条或多条文档

这里以 insert 方法为例:

查找(Read)

MongoDB 提供 find 方法查找文档,第一个参数为查询条件:

db.drivers.find() #查找所有文档

db.drivers.find({name: "Xiaose"}) #查找 name 为 Xiaose 的文档

db.drivers.find({age:{$gt:20}}) #查找 age 大于 20 的文档

更新(Update)

MongoDB 提供 updata 方法更新文档:

db.collection.updateOne() 更新最多一个符合条件的文档

db.collection.updateMany() 更新所有符合条件的文档

db.collection.replaceOne() 替代最多一个符合条件的文档

db.collection.update() 默认更新一个文档,可配置 multi 参数,跟新多个文档

下面的命令将 name 字段为 Chen 的文档,更新 age 字段为 30:

删除(Delete)

MongoDB 提供了 delete 方法删除文档:

db.collection.deleteOne() #删除最多一个符合条件的文档

db.collection.deleteMany() #删除所有符合条件的文档

db.collection.remove() #删除一个或多个文档

以 remove 方法为例:

MongoDB 提供了 drop 方法删除集合,返回 true 表面删除集合成功:

db.drivers.drop()

02 数据库可视化连接工具介绍

MongoDB Compass 是MongoDB可视化数据库管理系统软件。将数据库信息用图形化的界面展示出来,它能以视觉化的方式探索数据、在数秒内运行即时查询、创建数据库及管理集合和文档、与数据交换实现 CRUD 功能、查看和优化查询性能、构建地理查询等。让你能在索引、文档验证等方面作出更合理的决策。

MongoDB Compass的四大功能:

数据导入:支持将数据从CSV或JSON文件导入MongoDB数据库。

数据查询:编写临时查询以筛选数据。探索你的系列中的趋势和共性。

聚合管道创建:编写聚合管道,使集合或视图中的文档能够通过多个阶段,在这些阶段中,文档被处理成一组聚合结果。

操作命令运行:使用Compass中的嵌入式MongoDB Shell在交互式JavaScript环境中控制您的数据。

03 Python操作数据库

Python 作为一种功能强大的编程语言,拥有丰富的库和工具,能够方便地与 MongoDB 进行交互。

连接数据库

Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接,我们可以使用以下命令来安装。

创建数据库需要使用 MongoClient 对象,并且指定连接的 URL 地址和要创建的数据库名。如下实例中,我们创建的数据库 testdb :

在 MongoDB 中,数据库只有在内容插入后才会创建,就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

创建集合

MongoDB 中的集合类似 SQL 的表,MongoDB 使用数据库对象来创建集合,实例如下:

在 MongoDB 中,集合只有在内容插入后才会创建,就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

Python Mongodb 插入文档

MongoDB 中的一个文档类似 SQL 表中的一条记录。

集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name, value 对。

以下实例向 sites 集合中插入文档:

Python Mongodb 查询文档

MongoDB 中使用了 find 和 find_one 方法来查询集合中的数据,它类似于 SQL 中的 SELECT 语句。

1、查询一条数据

我们可以使用 find_one() 方法来查询集合中的一条数据。

查询 sites 文档中的第一条数据:

2.查询集合中所有数据

find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。

以下实例查找 sites 集合中的所有数据:

Python Mongodb 修改文档

我们可以在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。如果查找到的匹配数据多于一条,则只会修改第一条。

以下实例将 alexa 字段的值 1000 改为 1234:

Python Mongodb 删除数据

1、删除单个文档

我们可以使用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

以下实例删除 name 字段值为 "baidu" 的文档:

2、删除多个文档

我们可以使用 delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

删除所有 name 字段中以 F 开头的文档:

04 Nodejs操作数据库

连接数据库

在Nodejs中,你可以使用mongodb官方驱动程序来连接和操作MongoDB数据库。可以使用npm安装它:

安装完成后,我们在Nodejs的代码中,就可以连接MongoDB数据库。比如下面的代码:

插入文档

要插入一个文档,我们需要先选择要插入的集合,然后使用 insertOne 或 insertMany 方法来插入文档。

以下是一个插入单个文档的示例:

查询文档

要查询文档,我们可以使用 find 方法,并传递一个查询条件。

以下是一个查询文档的示例:

更新文档

要更新文档,我们可以使用 updateOne 或 updateMany 方法,并传递一个更新条件和要进行的更新操作。

以下是一个更新文档的示例:

删除文档

要删除文档,我们可以使用 deleteOne 或 deleteMany 方法,并传递一个删除条件。

以下是一个删除文档的示例:

05 实例讲解

接下来,我们给大家进行实例的讲解。

未完待续。

我是源动君,带领大家一起进步,谢谢观看。

相关推荐

SpringBoot 各种分页查询方式详解(全网最全)

一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...

《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略

《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...

LoadRunner(loadrunner录制不到脚本)

一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...

Redis数据类型介绍(redis 数据类型)

介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...

RMAN备份监控及优化总结(rman备份原理)

今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...

备份软件调用rman接口备份报错RMAN-06820 ORA-17629 ORA-17627

一、报错描述:备份归档报错无法连接主库进行归档,监听问题12541RMAN-06820:WARNING:failedtoarchivecurrentlogatprimarydatab...

增量备份修复物理备库gap(增量备份恢复数据库步骤)

适用场景:主备不同步,主库归档日志已删除且无备份.解决方案:主库增量备份修复dg备库中的gap.具体步骤:1、停止同步>alterdatabaserecovermanagedstand...

一分钟看懂,如何白嫖sql工具(白嫖数据库)

如何白嫖sql工具?1分钟看懂。今天分享一个免费的sql工具,毕竟现在比较火的NavicatDbeaverDatagrip都需要付费才能使用完整功能。幸亏今天有了这款SQLynx,它不仅支持国内外...

「开源资讯」数据管理与可视化分析平台,DataGear 1.6.1 发布

前言数据齿轮(DataGear)是一款数据库管理系统,使用Java语言开发,采用浏览器/服务器架构,以数据管理为核心功能,支持多种数据库。它的数据模型并不是原始的数据库表,而是融合了数据库表及表间关系...

您还在手工打造增删改查代码么,该神器带你脱离苦海

作为Java开发程序,日常开发中,都会使用Spring框架,完成日常的功能开发;在相关业务系统中,难免存在各种增删改查的接口需求开发。通常来说,实现增删改查有如下几个方式:纯手工打造,编写各种Cont...

Linux基础知识(linux基础知识点及答案)

系统目录结构/bin:命令和应用程序。/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev:dev是Device(设备)的缩写,该目录...

PL/SQL 杂谈(二)(pl/sql developer使用)

承接(一)部分。我们从结构和功能这两个方面展示PL/SQL的关键要素。可以看看PL/SQL的优雅的代码。写出一个好的代码,就和文科生写出一篇优秀的作文一样,那么赏心悦目。1、与SQL的集成PL/S...

电商ERP系统哪个好用?(电商erp哪个好一点)

电商ERP系统哪个好用?做电商的,谁还没被ERP折腾过?有老板说:“我们早就上了ERP,订单、库存、财务全搞定,系统用得飞起。”也有运营吐槽:“系统是上了,可库存老不准,订单漏单错单天天有,财务对账还...

汽车检测线系统实例,看集中控制与PLC分布控制

PLC可编程控制器,上个世纪70年代初,为取代早期继电器控制线路,开始采取存储指令方式,完成顺序控制而设计的。开始仅有逻辑运算、计时、计数等简单功能。随着微处理的发展,PLC可编程能力日益提高,已经能...

苹果五件套成公司年会奖品主角,几大小技巧教你玩转苹果新品

钱江晚报·小时新闻记者张云山随着春节的临近,各家大公司的年会又将陆续上演。上周,各大游戏公司的年会大奖,苹果五件套又成了标配。在上海的游戏公司中,莉莉丝奖品列表拉得相当长,从特等奖到九等奖还包含了特...

取消回复欢迎 发表评论: