mongodb 字段出现次数_MongoDB数据库

内容回顾

  • Xpath选择器
    不要求记忆,只要混个眼熟即可
  • 基于openpyxl模块爬取豆瓣电影
    单页爬取
    多页爬取

1.校验请求头里面是否有User-Agent参数
请求头里面加上即可
2.限制IP规定时间内的访问次数
1.人为的加上时间延迟
在你的程序里面加上time.sleep()让你的程序间歇一段时间之后再执行
2.IP代理池

  • 非关系型数据库之MongoDB

关系型数据库与非关系型数据库

常见数据库软件的端口号

3306 MySQL

6379 redis

27017 MongoDB

今日内容概要

  • MongoDB下载与安装
  • 基本命令操作
  • 账号创建及权限管理
  • 快捷操作MongoDB软件
    Navicat
    Robo 3T

今日内容详细

MongoDB下载与安装

百度搜索官网点击社区版本(community server)下载即可

安装步骤可以参考:MongoDB 教程 | 菜鸟教程

1.下载.msi的文件

2.完成后双击该文件

custom自定义安装路径(放到D、E、F盘的根目录下)

D:

E:

F:

不要勾选install MongoDB Compass

3.手动在MongoDB文件夹根目录下(自动创建了就不要创了 版本原因)

1.创建data文件夹

然后再data文件夹内创建db文件夹

2.创建log目录

然后在log目录下创建mongod.log文件

4.将mongod.exe文件所在的路径添加到环境变量中

mongod.exe mongodb数据库的服务端

mysqld.exe MySQL数据库的服务端

5.在MongoDB文件夹根目录下

创建mongod.cfg文件

在该文件内拷贝以下代码

systemLog:

destination: file

path: "D:MongoDBlogmongod.log"

logAppend: true

storage:

journal:

enabled: true

dbPath: "D:MongoDBdatadb"

net:

bindIp: 0.0.0.0

port: 27017

setParameter:

enableLocalhostAuthBypass: false

6.系统服务制作

一定要用管理员身份打开cmd终端

mongod --config "D:MongoDBmongod.cfg" --bind_ip 0.0.0.0 --install

或者直接在命令行指定配置

mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:MongoDBlogmongod.log --logappend --dbpath D:MongoDBdatadb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth

注意这里--auth如果没有创建权限管理就不要加

7.启动关闭

net start MongoDB

net stop MongoDB

8.登录

mongo

MongoDB重要概念

"""

MySQL中三个重要概念

库 文件夹

表 文件夹里面的文件

记录数据 文件里面的一行行数据

"""

# 查看所有的库

show databases; # MySQL命令

show dbs # MongoDB命令

SQL术语/概念 MongoDB术语/概念 解释/说明

database database 数据库

table collection 数据库表/集合

row document 数据记录行/文档

column field 数据字段/域

index index 索引

inner join 表连接,MongoDB不支持

primary key primary key MongoDB自动将_id字段设置为主键

库的增删改查

1.创建

use 库名 # use db1

# 库不存在会自动创建(临时先创建在内存中) 但是只有当你真正在该库里面产生数据之后才会刷到硬盘(再保存到硬盘) 如果不录入数据则创建的库就没了 所以用show dbs可能查看不到

2.查看

show dbs

3.改(忽略)

4.删

要先有数据的库才能删除

use db1

db.db1.insert({'name':'jason'})

db.dropDatabase() (这里敲代码时tab键补全)

集合的增删改查

1.查

show tables

2.增

db.集合名 # 规律跟 use 库名一致 里面没有数据是show不出来的 db是关键字

db.createCollection(集合名) # db.createCollection('t2') # 直接写入硬盘

3.改(忽略)因为没有固定表结构没有字段 字段名 字段类型

4.删

db.集合名.drop() # db.t2.drop()

文档增删改查

1.增

单条

db.集合名.insert({...}) # db.t1.insert({'name':'jason'})

等价于

db.集合名.save({...})

多条

db.集合名.insert([{...},{...},{...},{...}])

2.查

查询所有

db.集合名.find() # db.t1.find()

3.改

db.集合名.update(

筛选条件

新的内容

)

db.t1.update({'name':'jason1'},{$set:{'name':'jason111'}})

4.删

db.集合名.remove(

筛选条件

)

db.t1.remove({'name':'jason2'})

#1、删除多个中的第一个

db.t1.deleteOne({ 'age': 8 })

#2、删除国家为China的全部

db.t1.deleteMany( {'addr.country': 'China'} )

#3、删除全部

db.t1.deleteMany({})

用户创建及权限管理

正常的数据库软件都应该有用户及对应的权限管理

不可能所有人都是管理员都可以对所有的数据进行操作

有些用户只可以查看,有些用户可以修改,有些用户可以删除...

管理员账户需要在admin数据库下创建

1.切换到admin数据库下

use admin

2.创建账户并且赋予权限

db.createUser(

{

user: "root",

pwd: "123",

roles: [ { role: "root", db: "admin" } ]

}

)

其他用户在test数据库下创建

1.切换到test数据库下

use test

2.创建账户并赋予权限

db.createUser(

{

user: "jason",

pwd: "123",

roles: [ { role: "readWrite", db: "test" },

{ role: "read", db: "db1" } ]

}

)

'''上述账户都可以创建多个'''

先停止服务

net stop MongoDB

再移除服务

mongod --remove

20e78f5d67cc556024dd1462e4990e3a.png

再次添加

mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:MongoDBlogmongod.log --logappend --dbpath D:MongoDBdata --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth

再次启动

net start MongoDB

两种验证方式

1.直接在登录的时候验证

mongo -u "root" -p "123" --port 27017 --authenticationDatabase "admin"

2.进入之后再验证

mongo

use admin

db.auth("root","123")

注意在切换账户时普通用户不能直接切换到管理员身份需要exit退出后重新进入

作业

1.记忆关系型数据库的ACID四大特性

  • 原子性(Atomicity):化学中的原子指不可再分的基本微粒,数据库中原子性强调事务是一个不可分割的整体,事务开始后所有操作要么全部成功,要么全部失败,不可能停滞在中间某个环节。如果事务执行过程中出错就会回滚到事务开始前的状态,所有的操作就像没有发生一样不会对数据库有任何影响。
  • 一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态,即一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还是5000,这就是事务的一致性。
  • 隔离性(Isolation):当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离,比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转入钱。
  • 持久性(Durability):一个事务一旦被提交,则对数据库的所有更新将被保存到数据库中,不能回滚。

2.自己总结归纳数据库三大范式

第一范式(保证每列具有原子性,列不可再分)。

第二范式( 确保表中的每一列都和主键相关)

第三范式 (数据库中的每一列和主键列直接相关而不是间接相关)

3.自己独立完成数据库的安装并创建两个管理员账户三个普通用户账户

三个普通账户各自权限都不一致

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

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

相关文章

相似三角形·中考

概述相似,主要是相似三角形,在中考中有举足轻重的地位,难度也较高,往往倒三题中至少有一题是圆和相似的结合相似常常和四边形、反比例函数、圆、二次函数等结合,十分灵活 比例性质 概念若$\displaystyle \frac{a}{b}\f…

php 对接 北向数据接口 socket

function encode($msgType, $timeStamp, $body) {return "\xFF\xFF".pack(CNn, $msgType, $timeStamp, strlen($body)).$body;}$connection->send(encode(1, time(), reqLoginAlarm;userxxx;keyxxx;typexxx)); 详情参考: 请教使用socket做为客户端和北向接口对接&…

RHEL7单独安装图形X11

RHEL7 默认是最小化安装(Minimal Install),没有图形界面,我们应该选择Server with GUI。若已错过此步骤,我们采用以下方式补充安装GUI界面。 # yum group list Available Environment Groups:Minimal InstallCompute N…

485通讯线是几芯的_小令老师说门禁| 为什么485门禁必然会取代韦根?

韦根和485(RS485)是两种不同的通讯协议。通讯协议解决的是通讯双方数据如何传输和如何控制的问题。对于门禁而言,指的是读头和控制器之间的通讯。传统门禁很多采用韦根通讯方式,而现在485更为普及,大部分韦根门禁也完成…

epoll nio区别_大厂面试系列(二)::NIO和Netty

NIO和Netty面试题 NIO 阐述 NIO原理?BIO/NIO/AIO有什么区别?有那些实现?讲讲NIO的原理与实现?NIO用到了哪个经典技术思想?JDK1.8中NIO有做什么优化了解多路复用机制 常见问题 同步阻塞、同步非阻塞、异步的区别&#x…

拦截地址栏参数_selenium操作chrome时的配置参数

参数说明:about:version - 显示当前版本about:memory - 显示本机浏览器内存使用状况about:plugins - 显示已安装插件about:histograms - 显示历史记录about:dns - 显示DNS状态about:cache - 显示缓存页面about:gpu -是否有硬件加速about:flags -开启一些插件 chrome…

升级步骤linux_开发人员福音,在win10系统上安装linux子系统

对于软件开发人员来说,linux基本上是一个绕不过去的槛。 因为工作经常要用到linux,电脑用纯linux还是windows 虚拟机装linux,我一直纠结。因为我要使用docker的原因,所以就搜索到这文章了。如果装个纯linux,则一些win…

curl put方法 测试http_HTTP接口调试利器!4.8万Star的HTTP命令行客户端!

【导语】:Python实现的HTTP请求命令行客户端,我理解为curl的Python版本,但是提供了更友好,更易使用的命令及选项。简介HTTPie是使用Python实现的HTTP命令行工具,提供了更人性化、交互性更好的命令和选项,可…

文件打开特别慢_“Origin进不去、下载慢”的解决办法合集

玩儿烂橘子的游戏,喜闻乐见会见到下面这句话:呃,发生了些意料之外的事情。其实,这还挺意料之中的。▌进不去方法①:挂加速器。加速器挂Steam或者Origin大厅一般是免费的,没效果就换一个节点、模式、加速器。…

关于使用CPU缓存的一个小栗子

一、背景知识 CPU缓存(Cache Memory),是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。高速缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比…

输入快捷键显示未知命令_「干货」华为VRP基础和常用命令了解一下

华为VRP系统的理解手机里面是安卓系统,电脑里面windows系统在我们路由器、交换机、防护墙等网络设备中他们当中的系统就是VRP系统(通用路由平台)可以理解为华为的类型交换机,华为类型路由器以及防火墙他们之间的命令行几乎都是一样华为设备提供丰富的功能…

2 字符串求交集_PostGIS教程十八:维数扩展的9交集模型

一、什么是维数扩展的9交集模型"维数扩展的9交集模型-Dimensionally Extended 9-Intersection Model"(DE9IM)是一个用于建模两个空间对象如何交互的框架。首先,每个空间对象都具有:内部(interior)边界&#…

房子里的K2 BPM业务流程管理

房…子这件事上,尴尬实在太多。 ಥ_ಥ 职场新人,租房很尴尬; 未婚男女,婚房很尴尬; 有下一代的,学区房很尴尬; 耄耋之年,养老房很尴尬... ▽ 甭管买房、租房、装修、设计&#xff0c…

大学生体测成绩判断c语言_体育改革瞄准高校,体测不过关可能真的毕不了业了...

「ECO氪体」体育圈人www.ecosports.cn文/ 圈哥回忆上学期间,体育最令你头疼的时刻是什么?是不是在体育中考将要到来之前,还没日没夜枯燥的训练和近乎苛刻的饮食控制?而现在,体育似乎不想再局限于中学了。图片截自&…

gojs 节点右键点击事件_SWMM快速建模方法(3)—建立管线上下游节点编号

在SWMM中,管线需要输入上下游节点检查井编号,那么在GIS中可否实现自动获取上下游节点编号呢?思路是这样的,首先获得管线两端节点,然后对端点进行融合,删除重复的节点,最后根据坐标关系分别建立管…

android 设置setmultichoiceitems设置初始化勾选_Linux内核启动:虚拟盘空间设置和内存管理结构初始化...

1. 设置虚拟盘并初始化接下来main函数将对外设中的虚拟盘区进行设置。 检查makefile文件中"虚拟盘使用标志"是否设置, 以此确定系统是否使用了虚拟盘(假设有虚拟盘,大小设置为2 MB)。 操作系统从缓冲区的末端起开辟2MB内存空间设置为虚拟盘&am…

关闭mysql服务的方法有哪些_MySQL--启动和关闭MySQL服务

介绍了启动服务器的两种方式,以及可能遇到的问题第一种:系统服务1)可以通过右击方式一步步找到服务右击计算机->选择管理->找到服务,然后双击打开,找到mysql,我安装的是mysql8.0所以服务的名称显示是mysql80&…

devstack mysql_DevStack部署OpenStack开发环境 - 问题总结

建议在使用DevStack搭建OpenStack开发环境前,先安装好开发工具包组.特别是gcc,主要一定是在yum update -y 之前,否则更新完系统后,在安装开发工具包会出现很多依赖包因为版本更新而无法安装.要部署OpenStack需要注意若电脑配置不高,我自己的经验是先最小化或基本Web安装,然后,再…

linux 安装RabbitMQ 注意版本

Linux下安装RabbitMQ 一下载依赖包 1.下载Rabbitmq 所依赖的环境gcc、erlang包和rabbitmq包,这里演示是网上下载gcc 依赖 1yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xzerla…

jquery.js把我的时间修改了为什么?_电气老手在PLC程序调试修改时的几个必备小窍门,看你知道几个?...

我们工程师在设计程序,调试程序,修改程序的时候,为了方便以后对程序的理解,最好是对程序进行注释,能够对程序进行注释也是比较好的一个习惯。为什么这么说呢?因为我们人的脑容量是有限的,或多或…