mongodb使用简单文档

1、mongodb安装与卸载

1.1、安装

python -m pip install pymongo
或
pip install pymongo

如果要安装指定版本:

python -m pip install pymongo==3.5.1

对已有的版本进行升级:

python -m pip install --upgrade pymongo

1.2、卸载

pip uninstall pymongo

或者

sudo systemctl stop mongodb
sudo apt purge mongodb
sudo apt autoremove

1.3、查看当前版本

pip show pymongo

或者在终端输入:

python
import pymongo
print(pymongo.version)

1.4、查看当前mongodb数据库状态

sudo systemctl status mongodb

1.5、关闭数据库

sudo systemctl stop mongodb

1.6、打开数据库

sudo systemctl start mongodb

1.7、重启数据库

sudo systemctl restart mongodb

1.8、设置数据库开机时是否自动启用(默认启用)

sudo systemctl disable mongodb
sudo systemctl enable mongodb

1.9、故障排查

运行mongo,应显示如下:
在这里插入图片描述
如果报错如下:

Failed to connect to 17.0.0.1:27017

可以运行以下指令安装mongo client与server:

sudo apt-get install mongo-client
sudo apt-get install mongo-server

或者
运行sudo systemctl start mongodb时报错:

unit mongodb.service not found

可以安装:

sudo apt-get install mongo-server

2、数据库可视化工具安装及使用

暂时推荐安装的是Navicat

2.1、安装

下载网址:

https://navicat.com.cn/products

进入网址后,点击最上面的“工具”选项,会出现如下界面:
在这里插入图片描述选择Navicat Premium 16 免费试用:
在这里插入图片描述然后选择下面的位置1,点击下载。

下载后的文件默认放在download文件夹下,如果没有可以在浏览器的下载管理里找到下载的内容点击打开文件夹,然后在该文件夹下打开终端,输入:

chmod +x navicat16-premium-cs.AppImage
./navicat16-premium-cs.AppImage

完成安装。

2.2、Navicat工具的使用

安装完成后,在软件管理里面找到该软件并打开,选择试用,进入软件界面:
在这里插入图片描述
点击左上角的“连接”,选择MongoDB进行新建连接:
在这里插入图片描述连接名可以随便取,点击确定连上数据库。然后就可以对数据库的内容进行查看并操作了。

2.3、Navicat工具刷新试用期

Navicat的试用版只有14天,超过14天后无法打开Navicat,可以使用下列指令刷新试用期时间:

rm -rf ~/.config/navicat
rm -rf ~/.config/dconf/user

3、python下数据库操作常用指令

3.1、数据插入指令

3.1.1、单条数据插入指令:insert_one

insert_one会向数据库表中单独插入一条数据。

from pymongo import MongoClient
myclient = MongoClient("mongodb://localhost:27017")  # Host以及port
db = myclient["myDatabase"]  ##指定要操作的数据库
#mycol = db["collection1"]     ##指定要操作的数据库表,不同的写法
mycol = db.collection1   # 指定要操作的数据库表,没有则自动创建
result = mycol.insert_one({"name":"lisi","age":22,'gender':'female'})   # 插入一条数据,如果没出错那么说明连接成功
print(result)

运行后终端显示:

<pymongo.results.InsertOneResult object at 0x7fb9a3301760>
3.1.2、多条数据插入指令:insert_many

insert_many可以同时插入多条数据,即使它们的参数不完全一致。

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017")  # Host以及port
db = myclient["myDatabase"]  ##指定要操作的数据库
coll = db["collection1"]     ##指定要操作的数据库表
mylist = [{ 'name': 'hanmei', 'age': 19 },{ 'name': 'wanghua', 'gender': 'male' },{ 'name': 'lihong', 'gender': 'female' }
]
y = coll.insert_many(mylist)
print(y)

3.2、数据删除指令

3.2.1、单条数据删除指令:delete_one

delete_one指令会搜索并删除第一条满足条件的数据

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.delete_one({'name':'hanmei'})
print(result)

上述示例中虽然给的检索关键词是“name"=“hanmei”,但是其只会删除表中第一条“name"="hanmei"的数据而不会对后续的数据进行操作。

3.2.2、单数据查找并删除指令:find_one_and_delete

该指令与前一条指令类似,但是区别在于该指令可以通过返回值区分删除是否成功:

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.find_one_and_delete({'name':'lihong'})
print(result)

这里相当于删除了一条name为lihong的数据,如果找到并删除了会返回被修改的数据:

{'_id': ObjectId('64f7f81835699cd683b594b2'), 'name': 'lihong', 'gender': 'female'}

如果没有找到会返回None。

3.2.3、多条数据删除指令:delete_many

delete_many会同时删除数据库中所有满足条件的数据

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result= coll.delete_many({'gender':'male'
})
print(result.raw_result)  #查看返回的结果

上述指令执行时搜索数据库表中所有gender=male的数据并进行删除,删除后的数据库表显示如下:

3.3、数据查找指令

3.3.1、数据库表查询指令:find

find函数可以返回被查询的数据库表内的所有数据,属于无条件查找

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.find()
for each in result:print(each)
3.3.2、条件查询指令:find

可以在find中添加需要查询的关键字,实现带条件的查询,此时会满足所有满足条件的结果:

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.find({'name':'lihong'})
#输出的两种方式:
#打印单条
#print(list(result)[0])
#或打印全部
for each in result:print(each)
3.3.3、多条件查询指令:find

如果在find中同时添加多个条件,可以实现多条件的数据查询指令:

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.find({'name':{'$in':['lisi','lihong']},'gender':'female'})
for each in result:print(each)

如上式,查询的条件为name为’lisi’或者’lihong’,同时满足gender为female的数据。

3.3.4、仅返回第一条数据的条件查询指令:find_one

该函数返回第一条满足条件的数据:

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.find_one({'name':'lisi'})
print(result)
3.3.5、字段查询指令:distinct

该指令用于查询某个字段下存在哪些数据类型

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
Scode = coll.distinct( "age")
print (Scode)

上述代码的含义是查询当前age字段下存在哪几种不同的数据

3.4、数据修改指令

3.4.1、单字段修改指令:update_one

查询满足条件的第一条字段并修改其对应参数:

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.update_one({'name':'lisi'},{'$set':{'age':'20'}})
print(result)

注意如果这里查询的条件不满足则不会进行任何操作。

3.4.2、单数据查找并修改指令:find_one_and_update
from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.find_one_and_update({'name':'lihong'},{'$set':{'name':'hansi','age':'6'}})
print(result)

这里相当于找到第一条满足条件name为lihong的数据,修改它的name为hansi,age为6
注意这里是找到并修改,所以对于没有输入的字段是不会修改的,还是会保留原来的值。同时执行该指令后终端会显示被修改的单条数据的具体信息:

{'_id': ObjectId('64f7f78e687db263aba6bd15'), 'name': 'lihong', 'gender': 'female'}

此外,如果查找给的条件没有找到满足的数据时,result的返回值会变成None,这是find_one_and_update与update_one之间的区别。

3.4.3、单数据查找并替换指令:find_one_and_replace

前面find_one_and_update指令查找一条数据并进行修改时只会修改传入的一部分参数,对于其他参数不进行修改。如果需要将整个参数都替换掉的话可以直接使用find_one_and_replace指令:

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.find_one_and_replace({'name':'hanmei'},{'name':'jeson','weight':56})
print(result)

上述指令执行时会查找第一条满足name = hanmei的数据并使用后面的数据进行替换。该指令与update最大的区别在于update会保留那些传入参数中没有附带的字段,但是replace则会清空这些字段。

3.4.4、多数据查找并替换指令:update_many

该指令会批量修改满足查找要求的数据,将对应的字段全部修改为一致。

from pymongo import MongoClient
host = 'localhost'   # 你的ip地址
client = MongoClient(host, 27017)  # 建立客户端对象
db = client["myDatabase"]
coll = db["collection1"]
result = coll.update_many({'name':'lisssi'},{'$set':{'weight':'48','age':16}})
print(result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/191695.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C#】字符串拼接相关

目录 1.字符串拼接方式1 用号进行字符串拼接 复合运算符 2.字符串拼接方式2 3.控制台打印拼 4.例子 1.字符串拼接方式1 之前的算数运算符 只是用来数值类型变量进行数学运算的而 string 不存在算数运算符 不能计算 但是可以通过号来进行字符串拼接 用号进行字符串拼接 …

Vulhub靶场-KIOPTRIX: LEVEL 1

目录 环境配置 端口扫描 漏洞发现 mod_ssl漏洞利用 Samba远程代码执行漏洞利用 环境配置 首先去官网下载靶场导入到虚拟机中 下载地址&#xff1a;Kioptrix: Level 1 (#1) ~ VulnHub 下载完成之后导入到vmware中 这里需要改nat&#xff0c;桥接模式的靶机拿不到IP&…

LitCTF2023 - Reverse方向 全WP

文章目录 [LitCTF 2023]世界上最棒的程序员[LitCTF 2023]ez_XOR[LitCTF 2023]enbase64[LitCTF 2023]snake[LitCTF 2023]程序和人有一个能跑就行了[LitCTF 2023]debase64[LitCTF 2023]For AiurLitCTF{Pylon_OverCharge!!_We_Must_construc7_addition4l_pylons} [LitCTF 2023]世界…

torch.nn.functional.log_softmax 函数解析

该函数将输出向量转化为概率分布&#xff0c;作用和softmax一致。 相比softmax&#xff0c;对较小的概率分布处理能力更好。 一、定义 softmax 计算公式&#xff1a; log_softmax 计算公式&#xff1a; 可见仅仅是将 softmax 最外层套上 log 函数。 二、使用场景 log_soft…

跟李沐学AI-深度学习课程00-03【预告、课程安排、深度学习介绍、安装】

目录 00 预告 01 课程安排 02 深度学习介绍 03 安装 本地安装 04 数据操作数据预处理 数据操作 数据类型 创建数组 访问元素 数据操作实现 入门 运算符 广播机制 索引和切片 节省内存 转换为其他Python对象 数据预处理实现 读取数据集 处理缺失值 转换为张…

POSIX信号量

POSIX信号量 POSIX信号量用于同步操作&#xff0c;达到无冲突访问临界资源的目的&#xff0c;可以用于线程之间的通信。而信号量的本质其实就是一把计数器&#xff01;&#xff01;而我们对计数器有2个操作&#xff0c;一个是增加计数器的值&#xff0c;一个是减少计数器的值。…

Flink(七)【输出算子(Sink)】

前言 今天是我写博客的第 200 篇&#xff0c;恍惚间两年过去了&#xff0c;现在已经是大三的学长了。仍然记得两年前第一次写博客的时候&#xff0c;当时学的应该是 Java 语言&#xff0c;菜的一批&#xff0c;写了就删&#xff0c;怕被人看到丢脸。当时就想着自己一年之后&…

代码随想录算法训练营第五十五天|392. 判断子序列、115. 不同的子序列

第九章 动态规划 part15 392. 判断子序列 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace&q…

使用 Filebeat+Easysearch+Console 打造日志管理平台

近年来&#xff0c;日志管理平台越来越流行。使用日志管理平台可以实时地、统一地、方便地管理和查看日志&#xff0c;挖掘日志数据价值&#xff0c;驱动运维、运营&#xff0c;提升服务管理效率。 方案架构 Beats 是轻量级采集器&#xff0c;包括 Filebeat、Metricbeat 等。E…

Nginx安装配置与SSL证书安装部署

一、Nginx Nginx是一款高性能的开源Web服务器和反向代理服务器&#xff0c;被广泛用于构建现代化的Web应用和提供静态内容。 nginx官网 这里下载nginx-1.24.0-zip Nginx是一款高性能的开源Web服务器和反向代理服务器&#xff0c;被广泛用于构建现代化的Web应用和提供静态内…

“可信区块链运行监测服务平台TBM发展研讨会”将于11月23日在北京召开

为推动区块链治理与创新&#xff0c;积极推进信任科技生态体系建设&#xff0c;中国信息通信研究院、中国移动设计院联合区块链服务网络&#xff08;BSN&#xff09;发展联盟共同发起建立了可信区块链运行监测服务平台&#xff08;TBM&#xff09;。 TBM平台通过对区块链系统的…

​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第20章 系统架构设计师论文写作要点&#xff08;P717~728&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图