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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性能测试常见问题总结

01 硬件上的性能瓶颈 指的是CPU、内存、I/O读写速率&#xff0c;磁盘空间方面的问题。 02 网络上的性能瓶颈 指的网络带宽&#xff0c;网络波动&#xff0c;延时&#xff0c;丢包等。 03 应用程序上的性能瓶颈 指的是开发人员新开发出来的应用程序。 04 数据库的性能瓶颈…

Arduino驱动LM35线性温度传感器(温湿度传感器)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 LM35半导体的温度传感器,可以用来对环境温度进行定性的检测。LM35半导体温度传感器是美国国家半导体公司生产的线性温度传感器。其测温范围是-40℃到150℃,灵敏度为10mV/℃,输出电压与温度成正比。

WebGl-Blender:建模 / 想象成形 / Blender概念词汇表 / 快捷键

一、理解Blender 欢迎来到Blender&#xff01;Blender是一款免费开源的3D创作套件。 使用Blender&#xff0c;您可以创建3D可视化效果&#xff0c;例如建模、静态图像&#xff0c;3D动画&#xff0c;VFX&#xff08;视觉特效&#xff09;快照和视频编辑。它非常适合那些受益于…

Visio是什么软件,有哪些好用的Visio平替软件推荐?

1. 什么是Visio&#xff1f; Visio是一款由微软开发的流程图和矢量绘图软件&#xff0c;它可以帮助用户创建各种类型的图表、图示和流程图&#xff0c;从而更好地呈现和传达信息。Visio的功能强大&#xff0c;适用于各种领域&#xff0c;如项目管理、系统设计、流程优化等。…

linux环境下启动应用的不同方式对比分析

大家好&#xff0c;我是G探险者。 平时我们在Linux环境下启动Java应用程序时。可能会选择在前台或后台运行它们。但是这两者启动命令的各种参数含义是什么意思呢&#xff0c;今天我们就来聊聊&#xff0c;并分析一下他们的特点。 1. 前台启动 参数&#xff1a; java: Java程…

我认为除了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…

在做题中学习(30):字符串相加

思路&#xff1a; 相加时要转换成对应的数字&#xff0c;所以让字符数字-0 如‘9’-‘0’&#xff08;ASCII&#xff09;57-489 9110&#xff0c;会进1&#xff0c;把进位保存起来&#xff0c;只取0头插到新串里。 头插时要转换对应字符数字&#xff0c;所以让对应的数字‘…

各类软件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…

Unity 6 是下一个 LTS 版本即将发布

Unity 公司宣布&#xff0c;即将发布 Unity 6&#xff0c;并表示其为下一个长期支持版本 (LTS)。 Unity 在大会上演示了全新的 Unity 6引擎&#xff0c;并通过 Syncy Studios 采用 Unity 6 制作的《幻想王国&#xff08;Fantasy Kingdom&#xff09;》Demo 进行了演示&#xff…

OpenGL_Learn13(材质)

1. 材质 cube.vs #version 330 core layout (location 0) in vec3 aPos; layout (location 0 ) in vec3 aNormal;out vec3 FragPos; out vec3 Normal;uniform mat4 model; uniform mat4 view; uniform mat4 projection;void main() {FragPosvec3(model*vec4(aPos,1.0));Norma…

【MATLAB】史上最全的5种数据插值算法全家桶

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 大家吃一顿火锅的价格便可以拥有5种数据插值算法&#xff0c;绝对不亏&#xff0c;知识付费是现今时代的趋势&#xff0c;而且都是我精心制作的教程&#xff0c;有问题可随时反馈~也可单独获取某一算法的代码&#xff08…

Gem5模拟器学习之旅

安装gem5 模拟器 翻译自官网&#xff08;https://www.gem5.org/documentation/learning_gem5/part1/building/&#xff09; 支持的操作系统和环境 gem5的设计考虑到了Linux环境。我们定期在 Ubuntu 18.04、Ubuntu 20.04 和 Ubuntu 22.04 上进行测试&#xff0c;以确保 gem5 在…

zyj-ha 安装过程及使用部署

一&#xff0e;安装过程排坑 1. 硬件环境准备 排坑 1 首先&#xff0c;服务器至少需要 2 台&#xff0c;每台服务器至少需要 2 块网卡&#xff0c;并且必须有预留 心跳线网口&#xff0c;不能被其他业务占用&#xff0c;否则容易出现脑裂。 2. 通过配置管理工具导入安装包 …

CAD长方形纤维插件2D

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

基于libcurl+libopenssl开源库编译出curl下载工具及代码集成curl功能

准备素材&#xff1a; 1. openssl的版本&#xff1a; openssl-1.1.1w.tar.gz 2.curl的版本&#xff1a;curl-8.4.0.tar.gz 目标&#xff1a; 1.编译出openssl库&#xff1b; 2.编译出curl可执行文件及库&#xff1b; 步骤一&#xff1a;先解压压缩包 tar -zxvf openssl-1…

风光能互补发电庭院路灯系统技术原理

风光互补发电系统是由风力发电机组配合太阳能电池组件组成&#xff0c;通过专用的控制逆变器&#xff0c;将风力发电机输出的低压交流电整流成直流电&#xff0c;并与光伏电池组件输出的直流电汇集在一起&#xff0c;充入蓄电池组&#xff0c;实现稳压、蓄能和逆变全过程&#…

不动产数据质量提升_电子档案挂接

前言 做了不动产数据质量提升项目&#xff0c;其中包括集体土地所有权档案扫描、挂接。扫描的工作已经完成了&#xff0c;现在需要进行电子档案挂接。正常来说通过不动产系统技术支撑单位的批量挂接功能&#xff0c;但现实是一言难尽。   尝试过进行抓包分析&#xff0c;提交…

MySQL数据库下的Explain命令深度解析

Explain是一个非常有的命令&#xff0c;可以用来获取关于查询执行计划的信息&#xff0c;以及如何解释输出。Explain命令是查看查询优化器如何决定执行查询的主要方法。这个功能有一定的局限性&#xff0c;并不总是会说出真相&#xff0c;但是它的输出是可以获取的最好信息&…

C#单例模式懒汉式与饿汉式

单例模式一般分为懒汉模式和饿汉模式&#xff0c;懒汉式单例在第一次引用时创建实例&#xff0c;不是在类加载时&#xff1b;饿汉式单例模式是一种在类加载时就创建实例的方式&#xff0c;因此也称为静态初始化。 单例模式实现的技巧时构造私有&#xff0c;向外提供静态实例。…