mongodb学习笔记

这次的mongoDB是在学习B站视频 AV:68030937 的时候顺便学的,这里写个笔记记录下学习过程

首先依旧是安装文件,这个还是简单的,相比于我之前怎么也安装不好的caffe来说

官网在这里

我是依据菜鸟教程上面的安装方法安装了3.6.17版本,听说更高的版本会有一些比较麻烦的事情,所以就先安装这个版本了,教程上的安装过程基本就是官方安装的中文版,随后有一些小问题通过这篇帖子解决了,直接在cmd上运行mongodb
要启动mongodb,先将mongodb/bin添加到系统的环境变量里面,然后需要使用管理员权限打开cmd,输入

net start mongodb
mongo

即可

随后是具体的学习过程了,老师讲的不是很清晰,因此我很多时候还是要靠网上找资料
mongodb进入后有三个数据库,分别是admin、config和local
创建用户,使用的是

//首先需要切换到admin数据库
use admin
db.createUser({user:'name',pwd:'password',roles:[{db:'a_data_base',role:'root'}]})
//db:'a_data_base'指的是可以操作哪一个数据库,可以不写.root可以写成read表示只读

可以使用

use admin

进行创建第一个用户,这里给的权限是root,应该是最大的权限
一开始老师还错误创建了一个集合,以为是数据库,关于集合和数据库\文档的区别在这里

创建一个数据库的方法,可以参考这里

使用

use admin//需要先切换到admin数据库才能登录
db.auth('A','123456')

来进行登录

而在当前数据库创建一个集合可以直接使用:

db.five.insert({name:'333'})//five是集合名称

下面是瞎起的名字用来做测试

{ "_id" : 4, "name" : "小儿子", "age" : 120, "gender" : true, "like" : "狗" }
{ "_id" : 5, "name" : "小傻子", "age" : 50, "gender" : false, "like" : "鸭子" }
{ "_id" : 6, "name" : "小龟子", "age" : 14, "gender" : true, "like" : "蛾子" }
{ "_id" : 7, "name" : "小鬼子", "age" : 12, "gender" : true, "like" : "笑脸" }
{ "_id" : 8, "name" : "小六子", "age" : 11, "gender" : false, "like" : "鱼鱼" }
{ "_id" : 9, "name" : "小子", "age" : 14, "gender" : true, "like" : "狗" }
{ "_id" : 3, "name" : "小桃子", "age" : 10, "gender" : false, "like" : "猫" }
{ "_id" : 1, "name" : "小七子", "age" : 10, "gender" : false, "like" : "猫" }
{ "_id" : 2, "name" : "小李子", "age" : 10, "gender" : false, "like" : "猫" }

下面是一串冗长的代码集合

show users//当前数据集中的用户

show collections//展示数据中的集合
db.five.find()//展示five集合中的数据
db.four.insert()//插入数据
db.stu.find({gender:true})//查找某个
db.stu.find({age:{$gt:18}})//查找年纪大于18的
db.stu.find({$and:[{age:{$gt:28}},{gender:true}]})//使用逻辑运算符
db.stu.find({$or:[{$and:[{age:{$lt:28}},{gender:false}]},{like:"狗"}]})//多个逻辑运算(写到眼瞎)
db.stu.find({age:{$in:[38,120]}})//范围运算
//甚至可以使用正则表达式来写

db.five.drop()//删除five集合
db.firstdata.remove({name:'张叔叔'})//删除
db.firstdata.remove({})//删除所有
db.stu.update({_id:1},{$unset:{gender:""}})//删除某一个选项

db.stu.update({_id:1},{$set:{name:'小王八'}})//修改,要是有多个人符合条件的话只会修改第一个
db.stu.update({gender:true},{$set:{age:66}},{multi:true})//修改所有


比较运算的一些符号:在这里插入图片描述在这里插入图片描述

高级查询:

db.stu.find().skip(2).limit(3)//表示跳过前两条数据,限制只看三个数据,而且总是优先执行skip

 db.stu.find({},{name:1,age:1})//只看姓名和年龄
//高级查询中,投影表示的是显示某一类数据,想要他显示就写一个1,不想就写0

db.stu.find({gender:true}).count()//计算性别为true的数量

db.stu.find().sort({age:1,_id:-1})//按照年龄升序(1为升序,要是一样的id按照负数排序)

db.stu.distinct('like',{})//可以去除重复

聚合查询:和普通查询不一样,使用aggregate来进行查询
group主要是用来分组

db.stu.aggregate([{$group:{_id:'$gender'}}])//$ group:分组,这里是按照性别分组

db.stu.aggregate([{$group:{_id:'$gender',sumage:{$sum:'$age'}}}])//找到性别以后找年龄之和

 db.stu.aggregate([{$group:{_id:'$gender',sumage:{$avg:'$age'}}}])//求年龄平均值
 
db.stu.aggregate([{$group:{_id:'$like',maxage:{$max:'$age'}}}])//求不同喜好的最大值

$match和find一样,但是match的值可以传递

db.stu.aggregate([{$match:{age:{$gt:20}}},{$group:{_id:'$gender',avgage:{$avg:'$age'}}}])//这句话的意思就是大于20岁男女年龄的平均值
//先使用match找到年龄大于20岁的人,然后再求平均值

$project是投影,有些东西你计算出来以后但是你不想让他显示,就可以使用投影

db.stu.aggregate([{$match:{age:{$lt:50}}},{$group:{_id:'$like',avgage:{$avg:'$age'},sumage:{$sum:'$age'}}},{$project:{sumage:1}}])
//先找年龄小于50的(match)
//再找年龄平均值和总值(group)
//最后让avgage隐藏(project)

$sort是排序

db.stu.aggregate([{$match:{age:{$lt:50}}},{$group:{_id:'$like',avgage:{$avg:'$age'},sumage:{$sum:'$age'}}},{$sort:{avgage:1}}])
//先找年龄小于50的(match)
//再找年龄平均值和总值(group)
//最后依据平均年龄排序(要是把平均年龄隐藏了排序会出现错误)

$skip和
$limit

db.stu.aggregate([{$skip:2},{$limit:5}])//跳过两个,看到五个

$push:添加
$unwing:拆开数据

>db.stu.aggregate([{$group:{_id:'gender',allname:{$push:'$name'}}}])//依据性别找名字
{ "_id" : "gender", "allname" : [ "小儿子", "小傻子", "小龟子", "小鬼子", "小六子", "小子", "小桃子", "小七子", "小李子" ] }

> db.stu.aggregate([{$group:{_id:'gender',allname:{$push:'$name'}}},{$unwind:'$allname'}])
{ "_id" : "gender", "allname" : "小儿子" }
{ "_id" : "gender", "allname" : "小傻子" }
{ "_id" : "gender", "allname" : "小龟子" }
{ "_id" : "gender", "allname" : "小鬼子" }
{ "_id" : "gender", "allname" : "小六子" }
{ "_id" : "gender", "allname" : "小子" }
{ "_id" : "gender", "allname" : "小桃子" }
{ "_id" : "gender", "allname" : "小七子" }
{ "_id" : "gender", "allname" : "小李子" }
//拆开数据

在进行大批量的数据查找的时候,将内容设置为id,因为一般的查找id的速度都非常的快,因此设置完成后查找速度也非常的快
(视频day10中95分钟)

数据库的备份与恢复
(视频中day10)的104分钟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值