MongoDB教程(一)

首先写一下为什么要开这一个系列:本人在使用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': 'janedoe@example.com'
}
# 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': 'janedoe@example.com'
}

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

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

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

posted on 2024-07-26 13:52  Panzergrenadiere  阅读(15)  评论(0编辑  收藏  举报

导航