MongoDB的基本操作、Python的连接使用

一、数据库操作

1. 新建数据库

语法
MongoDB 创建数据库的语法格式如下:

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。
实例
以下我们创建了数据库 mongo:

use mongo

db 显示当前数据库
创建mongo

2. 查看所有数据库

查看所有数据库,可以使用 show dbs 命令:

show dbs

查看所以数据库

注:因为我们新建的test数据库还没写入内容所以并没有显示出来,插入数据 后再此查询就会出现

3. 删除数据库

语法格式如下:

db.dropDatabase()

集合操作

1. 创建集合

插入数据

语法

 db.COLLECTION_NAME.insert(document)  

在当前集合插入一条或多条数据(或叫文档)

参数说明

  • db:表示当前数据库对象。
  • createCollection():创建集合方法。
  • DOCUMENT表示文档。
  • COLLECTION NAME表示集合名称。
  • OPTIONS表示集合配置。
  • insert():向集合中插入文档的方法。

实例

db.c1.insert({ _id: 1, name: "小明", "专业": "计算机", "学号": "00124" }) 

在这里插入图片描述
可以看到我们在当前mongo数据库下显示创建了c1集合并插入了一条数据:
{ _id: 1, name: “小明”, “专业”: “计算机”, “学号”: “00124”}

2. 查看集合

查询数据

查看已插入文档:

db.c1.find()

查询
可以看到我们已经成功在c1插入数据了

我们也可以将数据定义为一个变量进行插入,如下所示:

在这里插入图片描述
首先我们数据定义给了doc变量,然后把doc插入到了c1

语法
remove() 方法的基本语法格式如下所示:

db.collection.remove( <query>, <justOne> )  

参数说明:

  • query :(可选)删除的集合的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个集合。

实例

我们移除 name为 ‘小明’ 的文档:

db.c1.remove({"name":"小明"})

在这里插入图片描述
通过find()查询可以看到已经删除掉了

如果你有同{“name”:“小明”}的多条数据,但你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:

db.c1.remove({"name":"小明"},1)

如果想删除所有的数据可以这样:

db.c1.remove({})

3. 删除集合

db.集合名.drop()
修改数据

语法

db.collection.update(    
	<query>, 
	<update>, 
	{       
		upsert: <boolean>,   
		multi: <boolean>,  
		writeConcern: <document>
	}
)

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update :update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
  • upsert :可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

实例
准备数据
在这里插入图片描述

通过 update() 方法来更新"姓名":

db.c1.update({"姓名":"李欣"},{$set:{"姓名":"张三"}})

update()方法默认是替换整条数据,故此处用修改器 $set 进行修改(添加)列值
(如果字段不存在会添加一个新的键值对)
在这里插入图片描述
以上语句只会修改第一条发现{“姓名”:“李欣”}的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。

db.c1.update({"姓名":"李欣"},{$set:{"姓名":"张三"}},{multi:true})

升级语法

修改器作用
$inc递增
$rename重命名列
$set修改列值
$unset删除列

实例
准备数据:

db.c2.insert([{"姓名":"张三","语文":80,"数学":66,"英语":55},{"姓名":"李四","语文":53,"数学":82,"英语":76,"化学":92}])

在这里插入图片描述

递增
给c2的数据集中 {“姓名”:“李四”} 的语文分数增加20分:

db.c2.update({"姓名":"李四"},{$inc:{"语文":20}}) //可填负数

在这里插入图片描述

重命名列(字段)
我们把c2里的 姓名 字段改为英文的 name

db.c2.update({"姓名":"李四"}, {$rename:{"姓名":"name"}})

在这里插入图片描述

删除列

把{name:“李四”}里的化学删掉了

db.c2.update({name:"李四"},{$unset:{"化学":true}})

在这里插入图片描述

二、条件查询

运算符作用
$gt大于
$gte大于等于
$lt小于
$lte小于等于
$ne不等于
$inin
$ninnot in

实例
在c2中查询数学小于70分的数据

db.c2.find({"数学":{$lt:70}})

在这里插入图片描述

配合pretty()可进行易读查询

db.c2.find({"数学":{$lt:70}}).pretty() //数据少不明显

三、聚合操作

表达式描述
$sum计算总和
$avg计算平均值
$min最小值
$max最大值
$push在结果文档中插入值到一个数组中
$addToSet在结果文档中插入值到一个数组中,但不创建副本
$first根据资源文档的排序获取第一个文档数据
$last根据资源文档的排序获取最后一个文档数据

语法

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)  
$group

实例

准备数据c3

db.c3.insert([
{ id:"1",name:"iphone8",price:3000,type:"电子通讯"},{ id:"2",name:"lining",price:500,type:"运动鞋"},
{ id:"3",name:"安踏",price:300,type:"运动鞋"},
{ id:"4",name:"HUAWEI MATE30",price:5000,type:"电子通讯"},{ id:"5",name:"vivo x27",price:4000,type:"电子通讯"}])
  1. 计算c3中电子通讯和运动鞋的 price 总和
db.c3.aggregate([{$group:{_id:"$type","总价":{$sum:"$price"}}}]) 

在这里插入图片描述
首先对 _id:“$type” 进行 g r o u p 分组,对 " group 分组,对 " group分组,对"price" 进行 $sum 求和方式,求和结果存放在 总价 列

四、Python连接数据库

官网下载Anaconda:https://www.anaconda.com/download/success

在这里插入图片描述

在Anaconda Shell里安装 pymongo:

pip install pymongo

在这里插入图片描述
确保已经安装pymongo的情况下,在开始菜单里,打开安装Anaconda附带的Jupyter Notebook
在这里插入图片描述

连接

在Jupyter里新建Python文件,运行以下每条代码

  1. 引入pymongo
# 引入pymongo
from pymongo import MongoClient
  1. 连接MongoDB
# 连接到MongoDB,使用本地端口 localhost
client = MongoClient('localhost')
  • 连接数据库
    如果该数据库不存在,会自动创建一个mongo数据库
# 连接到 ‘mongo’ 数据库
db = client['mongo']
  • 连接数据库里的集合
    如果该集合不存在,会自动创建一个 c3 集合
# 连接到 c3 集合
collection = db['c3']
  • 查询集合里面的内容
# 查询 集合 所有内容
for doc in collection.find():
    print(doc)

在这里插入图片描述

验证

  • 我们尝试在Jupyter里新建一个数据库并往里面一条数据存放到c4集合里:
    在这里插入图片描述
    最后验证连接成功
参考资料:
  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值