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.rhkb.cn/news/196602.html

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

相关文章

环境配置 | Git的安装及配置[图文详情]

Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从小到大的项目版本管理。下面介绍了基础概念及详细的用图文形式介绍一下git安装过程. 目录 1.Git基础概念 2.Git的下载及安装 3.常见的git命令 Git高级技巧 Git与团队协作 1.Git基础概念 仓库&#…

我认为除了HelloWorld之外,Python的三大数据转换实例可以作为开始学习Python的入门语言。

Python的三大数据转换实例 一、反转三位数 class Solution:def funtcion(self,number):hint(number/100)tint(number%100/10)zint(number%10)return 100*z10*th if __name____main__:solution Solution()num123new_num solution.funtcion(num)print("输入:{}".fo…

制作Go程序的Docker容器

今天突然遇到需要将 Go 程序制作成 Docker 的需求&#xff0c;所以进行了一些研究。方法很简单&#xff0c;但是官方文档和教程有些需要注意的地方&#xff0c;所以写本文进行记录。 源程序 首先介绍一下示例程序&#xff0c;示例程序是一个 HTTP 服务器&#xff0c;会显示si…

基于DOTween插件实现金币飞行到指定位置功能

文章目录 前言一、DOTween是什么&#xff1f;二、使用步骤1.导入DOTween插件在Unity官方插件商店找到DOTween插件导入DOTween插件启用DOTween插件 2.代码逻辑金币飞行代码控制飞行效果代码 3.物体配置1.物体上装配CoinEffect脚本2.在金币预制体上装配FlyControl脚本 三、效果展…

基于SpringBoot的SSMP整合案例(消息一致性处理与表现层开发)

消息一致性处理 在后端执行完相应的操作后&#xff0c;我们需要将执行操作后的结果与数据返回前端&#xff0c;前端 调用我们传回去的数据&#xff0c;前端是如何知道我们传回去的数据名称的&#xff1f; 答&#xff1a;前后端遵循了同一个"协议"。这个协议就是定义…

单例模式(常用)

单例模式&#xff08;单例设计模式) 在有些系统中&#xff0c;为了节省内存资源、保证数据内容的一致性&#xff0c;对某些类要求只能创建一个实例&#xff0c;这就是所谓的单例模式。 单例模式的定义与特点 单例&#xff08;Singleton&#xff09;模式的定义&#xff1a;指…

Stable Diffusion1.5网络结构-超详细原创

目录 1 Unet 1.1详细整体结构 1.2 缩小版整体结构 1.3 时间步编码 1.4 CrossAttnDownBlock2D 1.4.1 ResnetBlock2D 1.4.2 Transformer2DModel 1.4.2.1 BasicTransformerBlock 1.4.2.1.1 SelfAttention 1.4.2.1.2 CrossAttention 1.4.2.1.3 FeedForward 1.4.3 DownS…

【数据库】数据库连接池导致系统吞吐量上不去-复盘

在实际的开发中&#xff0c;我们会使用数据库连接池&#xff0c;但是如果不能很好的理解其中的含义&#xff0c;那么就可以出现生产事故。 HikariPool-1 - Connection is not available, request timed out after 30001ms.当系统的调用量上去&#xff0c;就出现大量这样的连接…

Git 基本操作

目录 创建仓库命令 git init git clone 提交与修改 git add git status git diff git commit git reset git rm git mv git checkout git switch git restore 提交日志 git log git blame 远程操作 git remote git fetch git pull git push Git 的工作就…

Redis维护缓存的方案选择

Redis中间件常常被用作缓存&#xff0c;而当使用了缓存的时候&#xff0c;缓存中数据的维护&#xff0c;往往是需要重点关注的&#xff0c;尤其是重点考虑的是数据一致性问题。以下是维护数据库缓存的一些常用方案。 1、先删除缓存&#xff0c;再更新数据库 导致数据不一致的…

如何实现Redisson分布式锁

首先&#xff0c;不要将分布式锁想的太复杂&#xff0c;如果我们只是平时业务中去使用&#xff0c;其实不算难&#xff0c;但是很多人写的文章不能让人快速上手&#xff0c;接下来&#xff0c;一起看下Redisson分布式锁的快速实现 Redisson 是一个在 Redis 的基础上实现的 Java…

机器学习第4天:模型优化方法—梯度下降

文章目录 前言 梯度下降原理简述 介绍 可能的问题 批量梯度下降 随机梯度下降 基本算法 存在的问题 退火算法 代码演示 小批量梯度下降 前言 若没有机器学习基础&#xff0c;建议先阅读同一系列以下文章 机器学习第1天&#xff1a;概念与体系漫游-CSDN博客 机器学习…

802.11-2020协议学习__专题__TxTime-Calculation__HR/DSSS

802.11-2020协议学习__专题__TxTime-Calculation__HR/DSSS 16.2.2 PPDU format16.2.2.1 General16.2.2.2 Long PPDU format16.2.2.3 Short PPDU format 16.3.4 HR/DSSS TXTIME calculation PREV&#xff1a; TBD NEXT&#xff1a; TBD 16.2.2 PPDU format 16.2.2.1 General 定…

五分钟,Docker安装kafka 3.5,kafka-map图形化管理工具

首先确保已经安装docker&#xff0c;如果是windows安装docker&#xff0c;可参考 wsl2安装docker 1、安装zk docker run -d --restartalways -e ALLOW_ANONYMOUS_LOGINyes --log-driver json-file --log-opt max-size100m --log-opt max-file2 --name zookeeper -p 2181:218…

各类软件docker安装

docker Docker 要求 CentOS 系统的内核版本高于 3.10 &#xff0c;通过 uname -r 命令查看你当前的内核版本&#xff1a; uname -r 3.10.0-1062.1.2.el7.x86_64 安装 Docker&#xff1a; 安装 Docker&#xff1a;yum -y install dockerkafka和zookeeper docker pull wurstmei…

【RH850芯片】RH850U2A芯片平台Spinlock的底层实现

目录 前言 正文 1.RH850U2A上的原子操作 1.1 Link 1.2 Link generation 1.3 Success in storing 1.4 Failure in storing 1.5 Condition for successful storing 1.6 Loss of the link 1.7 示例代码 2.Spinlock代码分析 2.1 尝试获取Spinlock 2.2 释放Spinlock …

Vue前端添加水印功能

文章目录 概要技术细节附上几张调整的结果图 概要 前端Vue在页面添加水印&#xff0c;且不影响页面其他功能使用&#xff0c;初级代码水准即可使用&#xff0c;且有防人修改或者删除功能&#xff01; 提示&#xff1a;适用于Vue&#xff0c;组件已经封装开箱即用&#xff0c;有…

OpenHarmony应用开发入门教程(一、开篇)

前言 华为正式宣布2024年发布的华为鸿蒙OS Next版将不再兼容安卓系统。这一重大改变&#xff0c;预示着华为鸿蒙OS即将进入一个全新的阶段。 都说科技无国界&#xff0c;这是骗人的鬼话。谷歌的安卓12.0系统早已发布&#xff0c;但是自从受到美影响&#xff0c;谷歌就拒绝再向…

CAD长方形纤维插件2D

插件介绍 CAD长方形纤维插件2D版本可用于在AutoCAD软件内生成随机分布的长方形纤维图形&#xff0c;生成的dwg格式模型可用于模拟二维随机分布的纤维复合材料、随机初始裂缝等&#xff0c;同时模型可导入COMSOL、Abaqus、ANSYS、Fluent等有限元软件内进行仿真分析计算。 插件…

【算法萌新闯力扣】:找到所有数组中消失对数字

力扣热题&#xff1a;找到所有数组中消失对数字 开篇 这两天刚交了蓝桥杯的报名费&#xff0c;刷题的积极性高涨。算上打卡题&#xff0c;今天刷了10道算法题了&#xff0c;题目都比较简单&#xff0c;挑选了一道还不错的题目与大家分享。 题目链接:448.找到所有数组中消失对…