首页 > 数据库 >MongoDB教程(一)

MongoDB教程(一)

时间:2024-07-26 13:56:12浏览次数:17  
标签:教程 name MongoDB 数据库 文档 开发者 document

首先写一下为什么要开这一个系列:本人在使用MongoDB开发应用的时候遇见了不少问题,但国内的相关文章都比较古老,所以我想连载翻译2024年Packt出版社出版的Mastering MongoDB这本书。

第一章  MongoDB简介(第一部分)

MongoDB作为最受欢迎的文档数据库,是一种非关系型的NoSQL键值存储系统,同时也是一个JSON数据库,但其功能远不止于此。它是一个强大且特性丰富的开发者数据平台,内置了现代应用程序所需的各种功能,包括机器学习和人工智能能力、数据流处理、函数、触发器、无服务器计算、设备同步以及全文搜索等。

尽管MongoDB是非关系型数据库,但它也能够轻松处理关系型数据。为了帮助用户更好地建模和处理这类数据,MongoDB在learn.mongodb.com上提供了课程、教程和文档资源。

谁在使用MongoDB?

十年前,MongoDB的使用还比较小众,它是一个对像您这样的开发者有吸引力的年轻数据库。而到了2023年,MongoDB已被广泛应用于各行各业,其使用场景涵盖了各种情况和各种存储起来的数据的类型。全球众多大型银行、汽车制造商、政府机构以及游戏公司均采用MongoDB来支持其生产时的应用。MongoDB的一些著名用户包括Coinbase、Epic Games、Adobe、Canva、Ulta Beauty。

MongoDB Atlas平台拥有数百万用户,他们都信赖其能安全有效地在云端管理数据。这种普及使得MongoDB达到了前所未有的高度,不仅体现在公司自身的增长和价值上,也体现在开发者群体中的巨大影响力。截至2023年,每四个开发者中就有一人广泛地在生产环境中使用MongoDB。而在Go语言和JavaScript等其他开发者社区中,这一比例甚至更高,大约达到40%。

为什么开发者喜爱MongoDB?

除了其多功能性和强大的特性外,MongoDB成为众多开发者首选的原因还包括:

1. 灵活性和无模式:与传统的关系型数据库不同,MongoDB允许您在没有严格模式或预定义结构的情况下存储和检索数据。这种灵活性对于随时间演变的数据或处理非结构化、半结构化数据尤为有用。

2. 可扩展性和性能:MongoDB高度可扩展,并表现出色,既适合大规模应用,也适用于个人项目。MongoDB Atlas提供的永久免费层非常适合边边角角的项目。

3. 丰富的查询语言:MongoDB提供了强大的查询语言和索引功能,简化了诸如findOne和updateOne之类的常见操作。

4. 对开发者友好的数据格式:MongoDB中的数据格式与流行编程语言中的对象非常相似,减少了数据映射的复杂性,加速了开发进程。

5. 简单易上手:MongoDB的简洁性和无障碍的设置过程使其易于采用。而没有复杂的销售流程或许可困扰。

MongoDB吸引大多数开发者的,在于其日常使用的简单性,尤其是创建、更新及交互数据时的无缝体验。以Python开发者为例,他们可以非常直观地使用以下代码来插入文档、查询该文档并接收结果集,这一过程展示了MongoDB的易用性:

from pymongo import MongoClient
# Connect to MongoDB
client = MongoClient('mongodb://localhost:27017/')
db = client['mydatabase'] # Specify the database name
collection = db['mycollection'] # Specify the collection name
# Create a document to be inserted
document = {
'name': 'Jane Doe',
'age': 30,
'email': '[email protected]'
}
# Insert the document into the collection
result = collection.insert_one(document) # Check if the insertion was successful if result.acknowledged: print('Document inserted successfully.')
print('Inserted document ID:', result.inserted_id) else:    print('Failed to insert document.')

注意,开发者创建了一个字典来表示要插入的文档。在这个例子中,它包含了name、age和email等详细信息。开发者无需为文档创建ID,因为MongoDB会自动为每个文档生成一个唯一的标识符。

为了检索这份文档,你可以通过使用文档任意字段单独或组合的方式来过滤查询条件。下面让我们看一个实际操作的例子:

from pymongo import MongoClient
# Connect to MongoDB
client = MongoClient('mongodb://localhost:27017/')
db = client['mydatabase'] # Specify the database name
collection = db['mycollection'] # Specify the collection name
# Retrieve documents based on specific conditions
query = {
'age': {'$gte': 29}, # Retrieve documents where age is greater than or equal to
29
}
documents = collection.find(query)
# Iterate over the retrieved documents
for document in documents:
  print(document)

确实很简单!前面的例子展示了如何使用MongoDB查询操作符,比如$gte(大于等于)来过滤查询。但真正的妙处在于文档被返回时。当MongoDB返回一个文档时,它将以Python字典的形式表现。文档中的每个字段都是字典中的一个键值对,类似于以下示例:

{
  '_id': ObjectId('60f5c4c4543b5a2c7c4c73a2'),
  'name': 'Jane Doe',
  'age': 30,
  'email': '[email protected]'
}

MongoDB配备了一系列语言库和驱动程序,它们充当客户端和服务器之间的翻译层,拦截每一次操作并将其转化为MongoDB的查询语言。这意味着你可以使用最熟悉的编程语言,以纯粹符合该语言习惯的方式与数据进行交互。结合MongoDB Atlas开发者数据平台提供的其他功能,它真正地消除了数据库操作的复杂性,使你能够完全通过代码和IDE来与数据互动。这相比于使用单独的数据库shell、数据库UI及其他特定于数据库的工具来说,无疑更加便捷。

MongoDB Atlas提供了一个完全托管的MongoDB数据库服务,你甚至可以通过命令行界面来设置和注册。从根本上讲,MongoDB的使命是成为开发者强大的数据库支持,其特性更多地针对编程语言社区和框架集成进行优化,而非数据库管理工具。这一点在接下来的章节中会更加明显,您将通过开发者的视角学习更多关于MongoDB Atlas、Atlas矢量搜索、全文搜索以及聚合等特性。

阅读完本书后,你将了解到这些工具是多么有效,它们是如何简化数据库管理的!

标签:教程,name,MongoDB,数据库,文档,开发者,document
From: https://www.cnblogs.com/runkai/p/18325218

相关文章

  • Python 教程(三):字符串特性大全
    目录专栏列表前言1.字符串基础2.字符串方法字符串查询字符串修改字符串切片3.字符串格式化旧式格式化(`%`操作符)`str.format()`方法f-string(Python3.6+)4.字符串编码5.Unicode和ASCII6.正则表达式7.字符串比较8.字符串连接9.字符串不可变性10.字符串的内......
  • TLM求解器使用方法【CST软件零基础教程】
    TLM是三维全波电磁算法的一种,在CST中和T-solver一样都属于时域算法,互相补充。CST于2008年将TLM求解器收购。由于TLM求解器支持一些特殊的材料和结构,比如压缩模型,二维材料,而在EMC仿真中常用这些特殊材料和结构将系统简化,TLM便派上用场。当然,在天线,PCB,生物模型SAR仿真方面,TLM也......
  • 总结24个Python接单赚钱平台与详细教程,兼职月入5000+
    如果说当下什么编程语言最靠谱或者比较适合搞副业?答案肯定100%是:Python。python是所有语法中最简单易上手的语言,不需要特别的的英语词汇量,逻辑思维也不需要很差就能上手。而且学会了之后就能编写代码爬取各种数据,制作各种图表,提升工作效率。而且还能利用业余时间接点私活......
  • 基于GD32的矩阵按键usb-hid设备,详细教程,完全模拟的电脑数字键盘的所有功能,包括长按、
    本文采用的是基于GD32F350的一个4×5的矩阵键盘键盘板。矩阵键盘的电路原理图大致如下,由四个列引脚和五个行引脚来检测判断按键的按下。本文四个列引脚分别是PA15PB8PB9PC13,五个行引脚分别是PB10PB11PB12PB13PB14。typedefstruct{uint32_tGPIO_Group;......
  • jmeter下载安装完整教程
    1.jmeter下载安装前需要配置jdk环境,可参考jdk下载配置完整教程-CSDN博客安装了jdk并配置了环境可忽略,如果不确定是否已有该环境建议java-version,有java版本则无需进行配置直接第二步2.jmeter下载地址ApacheJMeter-DownloadApacheJMeter(官网地址)点击左侧的“Download......
  • jdk下载配置完整教程
    jdk下载地址:JavaDownloads|Oracle选择下载的文件后,需要登录orcle账号,才能下载,没有的话可以注册下载后点击安装,操作步骤根据提示进行完成安装后,开始配置java环境系统高级设置--环境变量配置全在系统变量进行配置点击新建--配置JAVA_HOME新建CLASSPATH,变量值填.;%J......
  • Java NIO框架Netty教程(四)- ChannelBuffer
    在字符串消息收发中提到。ChannelBuffer是Netty中非常重要的概念。所有消息的收发都依赖于这个Buffer。我们通过Netty的官方的文档来了解一下,基于流的消息传递机制。Inastream-basedtransportsuchasTCP/IP,receiveddataisstoredintoasocketreceivebuffer.Unf......
  • Java NIO框架Netty教程(六)-Java NIO Selector模式
    全文详见个人独立博客:JavaNIO框架Netty教程(六)-JavaNIOSelector模式JavaNIO框架Netty教程(六)-JavaNIOSelector模式看到标题,您可能觉得,这跟Netty有什么关系呢?确实,如果你完全是使用Netty的,那么可能你可以完全不需要了解Selector。但是,不得不提的是,Netty底层关于NIO的实......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-53- 处理面包屑(详细教程)
    1.简介面包屑(Breadcrumb),又称面包屑导航(BreadcrumbNavigation)这个概念来自童话故事“汉赛尔和格莱特”,当汉赛尔和格莱特穿过森林时,不小心迷路了,但是他们发现沿途走过的地方都撒下了面包屑,让这些面包屑来帮助他们找到回家的路。所以,面包屑导航的作用是告诉访问者他们在网站中......
  • 我正在遵循使用 selenium 在网站上抓取图像的教程,但代码无法运行
    我正在尝试编辑代码以保存验证码,希望最终编写一个自动化机器人。以下python代码会导致随后的错误。importrequestsfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByimporturllibimporttimeimportospath="C:/Users/micha/Do......