MongoDB基础操作与Python连接实战指南

江岸
江岸
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍MongoDB作为非关系型数据库的核心概念,涵盖集合、文档及JSON数据结构的理解。系统讲解MongoDB Shell中的库与集合管理命令,以及数据的增删改查(CURD)具体用法。同时,提供Python通过pymongo库连接MongoDB服务器的完整代码示例,演示如何执行插入、更新、查询及删除操作,适合初学者快速掌握数据库基础与编程集成方法。

MongoDB是一种基于分布式文件存储架构的非关系型数据库(NoSQL)。

尽管被归类为NoSQL数据库,MongoDB中的文档结构可以支持类似关系型数据的关联特性。

在MongoDB体系中,传统的“表”概念被“集合”所取代,而存储的具体数据单元称为“文档”,其本质即为一条JSON格式的数据记录。

启动MongoDB客户端的命令为mongodb: mongo。

退出当前MongoDB会话的命令为mongodb: exit。

数据库(库)的基本操作如下。

查看当前服务器上所有已存在的数据库列表,命令为show dbs。

切换到指定数据库或创建新数据库,命令格式为use llsdb。

需要注意的是,执行use命令进入某个数据库时,即使该数据库不存在,系统也不会报错。但如果在此数据库中未写入任何数据便直接退出,该数据库将不会被实际创建。因此,创建数据库的标准流程是先use进入,随后写入数据。

查看当前所在数据库名称的命令为db。

删除当前所在数据库的命令为db.dropDatabase() ,执行前必须确保已通过use命令进入目标数据库。

集合(Collection)的相关操作如下。

查看当前数据库中所有已创建的集合,命令为show collections。

手动创建指定名称的集合,命令格式为db.createCollection('llscol' [,options])。

删除指定名称的集合,命令格式为db.llscol.drop()。

数据的基本增删改查(CURD)操作如下。

向集合中插入单条数据,命令示例为db.llscol.insert({name: 'lls', age: 18})。

向集合中插入多条数据的操作如下:

db.llscol.insert([
  {name: 'lls1', age: 18},
  {name: 'lls2', age: 20}
])

查看集合中的数据,命令为db.llscol.find()。

以格式化后的美观视图查看数据,命令为db.llscol.find().pretty()。

全文档更新数据,即替换整个匹配到的文档,命令示例为db.llscol.update({name: 'haha'}, {xx: 'yy'})。

其中{ name: ‘haha'}作为查询条件,用于匹配需要更新的文档项。

指定字段更新操作,命令示例为$set,{multi: true}: db.llscol.update({name: 'lls1'}, {$set: {name: 'xxx', age: 666}})。

前面的{}部分为匹配条件,默认情况下仅会更新匹配到的第一个文档项。

批量更新多条数据的操作,命令示例为{multi: true}: db.llscol.update({name: 'lls1'}, {$set: {name: 'lls666'}}, {multi: true})。

该操作会在全文档匹配到对应条件的项后,逐一更新每个JSON文档中指定的键值对。

删除数据的操作,命令示例为db.llscol.remove({name: 'lls1'}) 。

此命令会删除所有包含{ name: ‘lls1'}条件的JSON文档。

仅删除匹配到的第一条数据的操作,命令示例为{justOne: true}: db.llscol.remove({name: 'lls1'}, {justOne: true})。

此选项确保只删除第一个匹配到的文档项。

接下来介绍如何使用Python操作MongoDB数据库。

import pymongo
client = pymongo.MongoClient('192.168.0.104', 27017)  # 连接并建立client.
db = client['llsdb']  # select database_name db = client.llsdb
stu = db['student']   # select table_name   stu = db.student
stu.insert_one({'name': 'lls'})
stu.insert_many([
  {'name1': 'lls1', 'age': 18},
  {'name2': 'lls2', 'age': 20},
  {'name3': 'lls3', 'age': 30}
])
stu.update_one({'name1': 'lls1'}, {'$set': {'age': 20}})
stu.update_many({'name2': 'lls2'}, {'$set': {'age': 90}})
print(stu.find_one({'name2': 'lls2'}))  # 查询无args的第一行,或匹配到的第一个行.
content_find = stu.find({})   # 空字典表示查询所有.
print(content_find)
for i in content_find:
  print(i)
print(stu.delete_many({'name': 'lls'}).deleted_count)
print(stu.delete_many({}).deleted_count)
"""
方法如下:
insert_one, insert_many, update_one, update_many, delete_one, delete_many, find_one, find.
"""

本文分享了MongoDB基本操作与Python连接并操作MongoDB的基础方法。这些内容虽然基础,却是日常开发工作中必须掌握的知识点。如果您希望深入了解更多MongoDB基本操作的相关内容,请查阅下方的相关链接。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。