数据分析-mongodb语句5.27

昨日内容回顾

  • 正则表达式

    通过一些特殊符号的组合去字符串中筛选/匹配/校验出符合条件的数据
    
    # 正则表达式符号在没有量词修饰的情况下都是单个单个字符匹配
    1.字符组的概念
    	[0-9a-zA-Z]
    2.特殊符号
    	.	匹配除换行符以外的任意字符
        \d	匹配数字
        ^	匹配字符串的开头
        $	匹配字符串的末尾
        ()	给正则表达式分组
        |	或的关系
        [^]	取反
    3.量词
    	'''量词不能单独使用 必须跟在正则符号的后面'''
        *		零次或多次
        +		一次或多次
        ?		零次或一次
        {4}		四次
        {4,}	四次或多次
        {4,10}	四次到十次
    # 正则表达式默认都是贪婪匹配
    4.转义字符
    	r
        \
    5.贪婪匹配与非贪婪匹配
    	在量词后面加上一个问号就可以将贪婪匹配变为非贪婪匹配
        	.*	贪婪匹配
            .*?	非贪婪匹配
        eg:<script>123</script> <html>123</html> <h1>123</h1>
    6.re模块
    	re.findall()
        	分组优先展示
        re.serach()
        re.match()
    
  • 数据清洗列字段添加及处理

    1.在python中可以使用re模块
    	re.findall(正则表达式,待匹配的文本内容)
    2.在DataFrame数据结构中也可以直接使用内置方法
    	df.str.extract(正则表达式)
    
  • 非关系型数据库之MongoDB简介及下载

    1.数据库的分类
    
    2.SQL与NoSQL
    
    3.MongoDB式一款最像关系型数据库的文档型非关系型数据库
    
    4.主要概念
    	MongoDB	MySQL
        库			数据库
        集合			表
        文档			记录
        # 在学习过程中为了方便有时候会直接使用MySQL来称呼
        
    5.下载与安装
    	.mis
    

今日内容概要

  • MongoDB安装与启动

    回忆MySQL如何下载 安装 启动
    
  • 基本NoSQL语句

  • 用户管理

    创建用户并分配相应的权限
    
  • NoSQL语句详细

    库的增删改查
    集合的增删改查
    文档的增删改查
    
  • NoSQL查询关键字

今日内容详细

MongoDB安装与启动

# 关于MongoDB的学习资料和错误解答网络上有非常全面的教程
1.双击下载好的msi文件并直接点击next
2.勾选同意事项并直接点击next
3.点击custom自定义安装
4.点击Browser修改文件存储路径(推荐不要放在C盘),点击next
5.再次直接点击next
6.取消勾选下载mongodb compass并点击next
7.再次点击install即可安装

主要文件介绍

bin文件夹
	里面放的基本都是启动程序
    	mongo.exe	客户端
        mongod.exe	服务端
data文件夹
	里面放的是数据相关
log文件夹
	里面放的是日志文件(监控记录)
ReadMe文件
	类似操作说明书

前期准备

1.查看mongodb文件夹内是否含有data和log文件夹
	如果没有需要你自己手动创建
    如果有则直接跳过
2.在data文件内创建db文件夹(目的是为了管理文件资源)
  在log文件内创建mongod.log文件
    如果有则直接跳过
3.将mongod.exe所在的路径添加到环境变量中
4.创建mongod.cfg文件
    	在该文件内拷贝以下代码
        systemLog:
       		destination: file
       		path: "G:\MONGODB\MongoDB\log\mongod.log"
       		logAppend: true
        storage:
           journal:
              enabled: true
           dbPath: "G:\MONGODB\MongoDB\data\db"
        net:
           bindIp: 0.0.0.0
           port: 27017
        setParameter:
           enableLocalhostAuthBypass: false
5.mongodb系统服务制作
	管理员身份打开cmd终端
		mongod --bind_ip 0.0.0.0 --port 27017 --logpath G:\MongoDB\log\mongod.log --logappend --dbpath G:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB"  --install 
6.服务启动与关闭
	net start mongodb
    net stop mongodb
7.卸载服务
	mongod --remove
8.打开cmd窗口输入mongo进入服务端
	mongo  # 客户端链接服务端

基本NoSQL语句

'''
SQL语句的结束符是分号
NoSQL语句没有结束符
'''
# 登录
	mongo
# 退出
	exit
    quit()
# 查看数据库
	show dbs  # show databases;
# mongodb自带三个数据库 admin config local

库的增删改查

'''
复习
	create databases 库名;
	show databases;/show create database 库名;
	drop databases ...
	alter databases ...
'''

# 查看
show dbs
"""show databases;"""
# 新增
use db1  # 先在内存中自动创建 如果db1内写入了数据那么才会存入硬盘中
db.db1.insert({'name':'jason','password':123}) # 写入数据
"""create database db1;"""
# 修改
忽略
# 删除
db.dropDatabase() # db是关键字
"""drop database db1;"""

集合增删改查

# 相当于MySQL中的表的概念 要想操作collection必须先有database

# 增
db.createCollection('表名') # 直接硬盘创建
db.集合名 # 先在内存中创建
"""create table 表名(id int primary key auto_increment,...)"""
# 查
show tables
# 改
忽略
# 删
db.集合名.drop()
'''drop table 表名'''

文档的增删改查

# 增	mongodb会自动创建主键字段_id如果自己指定则用自己的
'''insert into 表名 values(...)'''
db.t1.insert({})  # 单条数据
	insert也可以插入多条  db.t1.insert([{},{},{}])
db.t1.insertMany([{},{},{}])  # 多条数据

# 查
'''select 字段名1,字段名2 from 表名'''
db.t1.find()  # select * from t1;
db.t1.find({'name':'jason'})# select * from t1 where name='jason';

# 改
'''update 表名 set 字段名=新数据'''
db.t1.update({'name':'jason'},{$set:{'name':'jasonNB'}})
db.t1.update({'name':'jasonNB'},{'name':'jason666'})  # 替换(不常用)

# 删
'''delete from 表名 where 条件'''
db.t1.remove({})  # delete from t1;
db.t1.remove({'name':'jason'})# delete from t1 where name='jason';

#################################################################
'''如果出现了嵌套的情况 都可以使用句点符(.)往下查找'''
	#1、删除多个中的第一个(从上往下)
    db.t1.deleteOne({'age': 8 })

    #2、删除国家为China的全部
    db.t1.deleteMany({'addr.country': 'China'})  # 点key值 
	db.t1.deleteOne({'hobby.2':'DBJ'})  # 点索引
    
    #3、删除全部
    db.t1.deleteMany({}) 
#################################################################

用户管理

"""
mongodb针对用户权限的创建,数据可以保存在不同的数据库下
之后在登录的时候只需要自己指定账户数据来源于哪个数据库即可
但是管理员用户数据一般情况下推荐保存到admin库下
而普通用户任意库都可以,我们为了便于管理可以在test库下创建
"""

管理员账户需要在admin数据库下创建
    1.切换到admin数据库下
        use admin
    2.创建账户并且赋予权限(必须双引号)
    	# 创建一个root用户 并且拥有管理员权限 密码是123
        db.createUser(
          {
            user: "root",
            pwd: "123",
            roles: [ { role: "root", db: "admin" } ]
          }
        )

其他用户在test数据库下创建
	1.切换到test数据库下
    	use test
    2.创建账户并赋予权限
    	# 创建一个普通用户jason 密码123
        # 权限针对test库拥有读写权限
        # 权限针对db1库只有读的权限
    	db.createUser(
          {
            user: "zsw",
            pwd: "123",
            roles: [ { role: "readWrite", db: "test" },
                     { role: "read", db: "db1" } ]
          }
        )
'''上述账户都可以创建多个'''
# 最好是使用管理员打开cmd操作下列命令
先停止服务
    	net stop MongoDB
再移除服务
    	MongoD --remove
再次添加
    	mongod --bind_ip 0.0.0.0 --port 27017 --logpath G:\MongoDB\log\mongod.log --logappend --dbpath G:\MongoDB\data --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth
    再次启动
    	net start MongoDB

游客模式登录
	mongo
用户模式登录
	
    两种验证方式
        1.直接在登录的时候验证
            mongo -u "root" -p "123" --port 27017 --authenticationDatabase "admin"
        2.进入之后再验证
            # 可以由游客模式切换到任意的账户
            mongo
            use admin
            db.auth("root","123")

    """进入公司之后所有的数据库等都会有权限管理"""

前期数据准备

#2、插入单条
user0={
    "name":"jason",
    "age":10,
    'hobbies':['music','read','dancing'],
    'addr':{
        'country':'China',
        'city':'BJ'
    }
}

db.user.insert(user0)
db.user.find()

#3、插入多条
user1={
    "_id":1,
    "name":"ax",
    "age":10,
    'hobbies':['music','read','dancing'],
    'addr':{
        'country':'China',
        'city':'weifang'
    }
}

user2={
    "_id":2,
    "name":"wi",
    "age":20,
    'hobbies':['music','read','run'],
    'addr':{
        'country':'China',
        'city':'hebei'
    }
}

user3={
    "_id":3,
    "name":"yo",
    "age":30,
    'hobbies':['music','drink'],
    'addr':{
        'country':'China',
        'city':'heibei'
    }
}

user4={
    "_id":4,
    "name":"jg",
    "age":40,
    'hobbies':['music','read','dancing','tea'],
    'addr':{
        'country':'China',
        'city':'BJ'
    }
}

user5={
    "_id":5,
    "name":"jn",
    "age":50,
    'hobbies':['music','read',],
    'addr':{
        'country':'China',
        'city':'henan'
    }
}
db.user.insertMany([user1,user2,user3,user4,user5])

查询

学习mongodb的查询语句只要对比着MySQL去学,非常的容易!

并且在书写mongodb查询语句的时候,我们可以先使用MySQL的SQL语句

然后参考SQL语句再书写mongodb语句(相当于将MySQL语句翻译成mongodb)

查询指定字段

# select name,age from db1.user where id=3;
db.user.find(
    {'_id':3},
    {'_id':0,'name':1,'age':1}
)
'''0表示不要 1表示要'''
针对主键字段_id如果不指定默认是必拿的
普通字段不写就表示不拿

比较运算符

# SQL:=,!=,>,<,>=,<=
# MongoDB:{key:value}代表什么等于什么"$ne","$gt","$lt","$gte","$lte"

#1、select * from db1.user where name = "jason";
db.user.find({'name':'jason'})

#2、select * from db1.user where name != "jason";
db.user.find({'name':{"$ne":'jason'}})

#3、select * from db1.user where id > 2;
db.user.find({'_id':{'$gt':2}})

#4、select * from db1.user where id < 3;
db.user.find({'_id':{'$lt':3}})

#5、select * from db1.user where id >= 2;
db.user.find({"_id":{"$gte":2}})

#6、select * from db1.user where id <= 2;
db.user.find({"_id":{"$lte":2}})

逻辑运算符

# SQL:and,or,not
# MongoDB:字典中逗号分隔的多个条件是and关系,"$or"的条件放到[]内

#1、select * from db1.user where id >= 2 and id < 4;
db.user.find({'_id':{"$gte":2,"$lt":4}})

#2、select * from db1.user where id >= 2 and age < 40;
db.user.find({"_id":{"$gte":2},"age":{"$lt":40}})

#3、select * from db1.user where id >= 5 or name = "ax";
db.user.find({
    "$or":[
        {'_id':{"$gte":5}},
        {"name":"ax"}
        ]
})
"""取反操作了解一下即可"""
#4、select * from db1.user where id % 2=1;
db.user.find({'_id':{"$mod":[2,1]}})
#5、上题,取反
db.user.find({'_id':{"$not":{"$mod":[2,1]}}})

作业

1.完成mongodb数据的下载 安装 启动 配置
2.NoSQL与SQL交替学习(一定要做)
	先注释点SQL语句 根据NoSQL写出SQL
    再注释掉NoSQL语句 根据SQL写出NoSQL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值