第五章:MongoDB

第一节:关于MongoDB

MongoDB简介

MongoDB是比较流行的基于文件存储的非关系型数据库,使用C++编写;
可以存储任意格式的BSON(很类似JSON)数据;
拥有非关系型数据库的便捷、高效,同时也支持较为复杂的关系查询;

【数据库、集合、文档的概念】
关系型数据库中的数据库,MongoDB中也叫数据库
关系型数据库中的表,MongoDB中称为集合
关系型数据库中的行或记录,MongoDB中叫做文档

MongoDB的安装

MongoDB官网下载地址点击此处:
可视化工具MongoChef下载地址点击此处:

【安装过程说明】
MongoDB和它的可视化工具安装比较简单,使用默认的配置进行安装即可,安装路径中不要含有中文;
如果后续遇到服务不能正常运行的问题,请使用管理员命令行执行安装程序;
为了后续方便,可以选择将MongoDB安装路径的bin目录添加到系统的Path环境变量;

安装校验

1、在任意位置创建数据库文件存储路径,例如:D:\mogo
2、打开命令行终端,进入MongoDB安装路径的bin目录下,默认为:C:\Program Files\MongoDB\Server\3.4\bin

3、命令行运行如下命令,开启MongoDB服务,注意把路径换成自己的数据库存储路径:

mongod --dbpath=D:\mogo

此时窗口输出运行信息,注意到MongoDB的端口是27017,最终程序阻塞在原地,这代表服务已经正常运行了:

例:
在这里插入图片描述

4、打开新的命令窗口,在命令行中启动MongoDB应用程序,前提是把MongoDB安装路径的bin目录已加入到环境变量

mongo.exe

5、查看现有数据库

show dbs

注意:admin和local是系统自带的两个数据库
例:
在这里插入图片描述

第二节:MongoDB的基本操作

数据库操作

1、开启MongoDB服务

mongod --dbpath=setpath

2、启动MongoDB数据库

mongo

3、查看所有数据库

show dbs

4、创建 / 切换数据库(不存在时创建,但只有插入集合后才会显示)

use mydb

5、显示当前数据库名

db
db.getName()

6、查看帮助

help

7、退出MongoDB

exit

8、删除数据库

db.dropDatabase()

集合操作

1、显示所有集合

show collections

2、创建新的集合

db.createCollection("xxx")

3、删除集合

db.xxx.drop()

文档操作(增删改查)

  • 增加文档
    1、插入一个文档
db.xxxx.insert(
    {key1:value1,key2:value2,key3:value3}
)

2、插入多个文档

db.xxxx.insert([
    {key1:value1,key2:value2,key3:value3},
    {key4:value4,key5:value5,key6:value6}
])

3、没有指定文档的id时,save的功能和insert一致

db.xxxx.save(
    {key1:value1,key2:value2,key3:value3}
)
db.xxxx.save([
    {key1:value1,key2:value2,key3:value3},
    {key4:value4,key5:value5,key6:value6}
])
  • 删除文档
    1、删除指定条件的文档
# {"justOne":1}只删除一个,为0时代表所有符合条件的全删除
db.xxxx.remove({key1:value1},{"justOne":1})
  • 修改文档
    1、修改value
db.xxxx.update(
    {key1:value1},
    {$set:{key1:value2}}
)

2、修改key1为value1的文档的key2,增加10

db.xxxx.update(
    {key1:value1},
    {$inc:{key2:10}}
)

3、key1为0的,修改为18,作用于全部文档

db.xxxx.update(
    {key1:0},
    {$set:{key1:18}},
    {"multi":1}
)
  • 查询文档

1、查询所有

db.xxxx.find()

2、查询key1为0的文档,显示key2和key3

db.xxxx.find(
    {key1:0},
    {key2:1,key3:1}
)

3、查询key1为0的文档,显示key2以外的所有字段

db.xxxx.find(
    {key1:0},
    {key2:0}
)

4、查询一条key1为0的文档,显示key2以外的所有字段

db.xxxx.findOne(
    {key1:0},
    {key2:0}
)

MongoDB中的比较运算

$gt —— 大于
$gte —— 大于等于
$lt —— 小于
$lte —— 小于等于
$eq —— 等于
$ne —— 不等于

例:

# 查询年龄大于10的文档 
db.xxxx.find( {"age":{$gt:10}} ) 

# 查询年龄大于等于10的文档 
db.xxxx.find( {"age":{$gte:10}} ) 

# 查询年龄小于10的文档 
db.xxxx.find( {"age":{$lt:10}} ) 

# 查询年龄小于等于10的文档 
db.xxxx.find( {"age":{$lte:10}} ) 

# 查询年龄等于10的文档 
db.xxxx.find( {"age":{$eq:10}} ) 

# 查询年龄不等于10的文档 
db.xxxx.find( {"age":{$ne:10}} )

条件’与’,条件’或’

# 18以上成年男子文档(条件与) 
db.xxxx.find( {"age":{$gte:18},"gender":1} ) 

# 年龄在30到50之间的文档 
db.xxxx.find( { "age":{'$gt':30,'$lt':50} } ) 

# 60以上或10岁以下文档(条件或) 
db.xxxx.find( {$or:[ {"age":{$gte:60}}, {"age":{$lte:10}} ]} ) 

# 查询成年男子或老幼(与或结合使用) 
db.xxxx.find( 
	{$or:[ {"age":{$gte:18},"gender":1}, 
	{$or:[{"age":{$gte:60}},{"age":{$lte:10}}]} ]} 
)

第三节:查询结果的加工

使用 pretty() 格式化地显示数据

db.xxxx.find().pretty()

更多查询结果的加工

1、降序与升序(1为升序)

db.xxxx.find().sort({key:-1}) 

2、统计条数

db.xxxx.find().count() 

3、取前 n 个数据

db.xxxx.find().limit(n) 

4、跳过前 n 个 数据

db.xxxx.find().skip(n)

获取分页数据

所谓分页,无非是查询结果后,跳过一些数据,再取固定数据。

例:每页10条数据,那么第3页的数据如下

db.xxxx.find().skip(20).limit(10)

第四节:Python与MongoDB的交互

安装依赖 pymongo

和MySQL一样,用户要用到MongoDB,也是需要动态地进行数据库操作,因此需要编程语言动态实现。Python与MongoDB的交互也是需要一个第三方类库——pymongo实现;

pip3 install pymongo

Python与MongoDB的交互过程

1、建立Python到MongoDB的连接;
2、指定要访问的数据库和集合;
3、通过集合执行MongoDB指令;
4、结果的二次处理与输出;
5、断开连接;

这里以本机mydb数据库中heros集合中的文档为例
在这里插入图片描述
例1:插入数据

import pymongo


# 连接MongoDB数据库
conn = pymongo.MongoClient(
    # 配置主机和端口
    host="localhost", port=27017
)

# 指定要操作的数据库名
db = conn.mydb

# 指定要操作的集合名
collection = db.heros

# 插入一个数据文档
collection.insert(
    {"name": "张真人", "age": 120, "gender": 1, "words": "太极那么高深的功夫,你们居然当早操练?"}
)

# 插入多个数据文档
collection.insert([
    {"name": "东方不败", "age": 40, "gender": 3, "words": "没有了性,练功容易多了"},
    {"name": "段公子", "age": 19, "gender": 1, "words": "你信吗?我能征服每一个女人"},
    {"name": "神仙姐姐", "age": 18, "gender": 0, "words": "大家都叫我女神"}
])
print("插入成功!")

# 关闭连接
conn.close()

执行结果:
在这里插入图片描述

例2:查询数据

import pymongo


# 创建连接
conn = pymongo.MongoClient(
    host="127.0.0.1", port=27017
)

# 指定要操作的数据库与集合
db = conn.mydb
collection = db.heros

# 查询文档个数
ret1 = collection.find().count()
print('文档个数:',ret1)

# 查询全部
ret2 = collection.find()
print('查询后的文档内容:',ret2)
print('查询后的文档类型:',type(ret2))

# 查询年龄大于100的数据
ret3 = collection.find(
    {"age": {"$gt": 100}}
)

# 查询年龄小于18且性别是女的
ret4 = collection.find(
    {
        "age": {"$gt": 18},
        "gender": 0
    }
)

# 查询年龄大于100的,或20岁以下的女性
ret5 = collection.find(
    {
        "$or": [
            {"age": {"$gt": 100}},
            {"age": {"$lt": 20}, "gender": 0}
        ]
    }
)

# 查询结果按姓名降序排列
ret6 = collection.find().sort("name", pymongo.ASCENDING)

# 取前3个文档
ret7 = collection.find().limit(3)

# 查询第二页的三个文档,并遍历出来
ret = collection.find().skip(3).limit(3)
for item in ret:
    print(type(item), item)

# 断开连接
conn.close()

执行结果:
在这里插入图片描述

例3:修改数据

import pymongo


# 建立数据库连接
conn = pymongo.MongoClient(
    host="127.0.0.1", port=27017
)

# 指定数据库与集合
db = conn.mydb
collection = db.heros

# 执行更新:查询姓名为张真人的文档,姓名修改为"张三疯",年龄减10岁
ret = collection.update(
    {"name": "张真人"},
    {
        "$set": {"name": "张三疯"},
        "$inc": {"age": -10}
    }
)
print(ret)

# 断开连接
conn.close()

执行结果:
在这里插入图片描述在这里插入图片描述

例4:删除数据

import pymongo


# 建立与MongoDB的连接
conn = pymongo.MongoClient(
    host="127.0.0.1", port=27017
)
# 指定数据库与集合
db = conn.mydb
collection = db.heros

# 移除文档:移除年龄在40以下的文档数据
ret = collection.remove(
    {"age": {"$lt": 40}}
)

print(ret)

# 断开连接
conn.close()

执行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值