mongodb光速上手

news/2024/10/4 1:58:29/

 开始

        mongodb是一种nosql数据库,即非关系型数据库。

        安装好后将bin目录添加到环境变量。

        安装studio-3t,这是可视化编辑器

启动 

mongo --host localhost --port 27017

 指令

查看所有库

show dbs

使用或创建并使用库

use school
use 数据库名

向表中添加数据,数据是json格式,数据库会自己添加id

db.student.save({name:"Scoot",sex:"male",age:98,city:"斯德哥尔摩"})
db.表名.save(json格式数据)

查数据

db.student.find()
db.表名.find()

用户管理

        mongo默认不需要用户就可以使用

创建用户
use admin
db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]
})

安装目录下新建 mongo.cnf 文件,输入这些配置并开启验证,前两行注意mongo的安装路径

之后重新安装mongo以加载mongo.cnf

mongod --config "mongo.cnf路径" --reinstall

 管理数据库

//创建或使用集合
use school
//创建集合
db.createCollection("student")//添加一行数据
db.student.insertOne({name:"jack",age:300})//添加多行数据
db.student.insertMany([{name:"张三",age:3000},{name:"a李四",age:30}])//查看数据
db.student.find()//删除数据库
db.dropDatabase("teacher")
db.createCollection("teacher")
db.createCollection("teacher")//删除集合
db.teacger.drop()//查看所有集合
show collections//查看集合记录数量
db.student.count()

 查询

条件匹配

表达式作用
$lt<
$let<=
$gt>
$gte>=
$in包括任意一个(字符串数组)
$nin全都不包含(字符串数组)
$ne不等于(字符串)
$all被匹配的字段值应包含all中所有字段
$not被匹配的字段值应不包含not中任意
$or几个条件满足一个即可
$exists含有某字段的数据

 

db.student.insert([{name:"点火的",sex:"男",age:33,birthday:"0175-1-1",city:"庐江舒县",class:"5-1"},{name:"扇风的",sex:"男",age:27,birthday:"0181-1-1",city:"徐州",class:"5-2"},{name:"挨烧的",sex:"男",age:53,birthday:"0155-1-1",city:"沛国谯县",class:"5-3"}
])//查询
db.student.find()
db.student.find({name:"点火的",sex:"男"})
//查询性别男年龄大于20    $gte代表大于等于    $lt代表小于
db.student.find({sex:"男",age:{$gte:25}})
//只返回第一条记录
db.student.findOne({sex:"男",age:{$gte:25}})
//in实例城市筛选
db.student.find({sex:"男",city:{$in:["庐江舒县","沛国谯县"]}})
//不等于
db.student.find({sex:"男",city:{$ne:"庐江舒县"}})
//不包含
db.student.find({sex:"男",city:{$nin:["庐江舒县","沛国谯县"]}})
db.teacher.insert({name:"菩提",role:["能教猴子","能管猴子","能赶猴子"]})
//查询role是能管猴子和能赶猴子的
db.teacher.find({role:{$all:["能管猴子","能赶猴子"]}})
//查询年龄不在30-40的
db.student.find({age:{$not:{$gte:30,$lte:40}}})
db.student.find({$or:[{age:{$lte:30}},{age:{$gte:40}}]})//查询含有class字段的
db.student.find({class:{$exists:1}})

正则查询 

正则查询,没有引号

db.student.find({name:/的$/})

分页查询 

分页查询,从下标几开始,取几个

db.student.find().limit(3)
db.student.find().skip(1).limit(3)
db.student.find().skip(2).limit(3)
db.student.find().skip(3).limit(3)

排序

1升序-1降序,先排序后分页

db.student.find().sort({age:1})
db.student.find().sort({age:-1,name:1}).skip(1).limit(3)

去重

        用distinct代替find查找即可实现去重,参数为字符串,只查找某一特定字段,返回类型为数组,返回值可以使用javascript函数进行操作。

//名字去重,返回的数据类型为数组
db.student.distinct("city")
//使用javascript中的排序函数对结果集进行排序,-1升序,1降序
db.student.distinct("city").sort(function(){return -1})
//使用javascript的获取区间函数,获取数组中区间内数据,
//参数1开始下标值(包含),参数2结束下标值(不包含)
db.student.distinct("city").slice(0,2)

增删改

        分为增加一行和增加多行,增加多行需要以方括号包裹

db.teacher.insert({name:"菩提",role:["能教猴子","能管猴子","能赶猴子"]})db.student.insert([{name:"点火的",sex:"男",age:33,birthday:"0175-1-1",city:"庐江舒县",class:"5-1"},{name:"扇风的",sex:"男",age:27,birthday:"0181-1-1",city:"徐州",class:"5-2"},{name:"挨烧的",sex:"男",age:53,birthday:"0155-1-1",city:"沛国谯县",class:"5-3"}
])

        这里的删除时指删除一行或多行数据。

db.student.remove({class:"2-6",sex:"男"})

        这样就删除了所匹配的数据,建议删除前先查询,查完再将find改为remove。 

直接更新

        更新操作有两种方法,update和updateMany,update指更新找到的第一行,updateMany则更新所有匹配的数据。

db.student.update({},{$set:{name:"退休"}})
db.student.update({name:"退休"},{$set:{age:65,name:"123"}})
移除字段 

        $unset表示删除,1表示真的要删,0则不删

db.student.update({},{$unset:{age:1}})
运算

        $inc用于加法运算

db.student.update({},{$inc:{age:2}})
//为每个age+2
数组

        $push      用于向数组添加元素
        $pull        用于从数组删除元素

db.teacher.update({name:"菩提"},{$push:{role:"能敲猴子"}})
db.teacher.update({name:"菩提"},{$pull:{role:"能敲猴子"}})


http://www.ppmy.cn/news/1534212.html

相关文章

滚雪球学Oracle[3.3讲]:数据定义语言(DDL)

全文目录&#xff1a; 前言一、约束的高级使用1.1 主键&#xff08;Primary Key&#xff09;案例演示&#xff1a;定义主键 1.2 唯一性约束&#xff08;Unique&#xff09;案例演示&#xff1a;定义唯一性约束 1.3 外键&#xff08;Foreign Key&#xff09;案例演示&#xff1a…

kafka下载配置

下载安装 参开kafka社区 zookeeperkafka消息队列群集部署https://apache.csdn.net/66c958fb10164416336632c3.html 下载 kafka_2.12-3.2.0安装包快速下载地址分享 官网下载链接地址&#xff1a; 官网下载地址&#xff1a;https://kafka.apache.org/downloads 官网呢下载慢…

简易CPU设计入门:取指令(三),ip_buf与rd_en的非阻塞赋值

在开篇&#xff0c;还是请大家首先准备好本项目所用的源代码。如果已经下载了&#xff0c;那就不用重复下载了。如果还没有下载&#xff0c;那么&#xff0c;请大家点击下方链接&#xff0c;来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后&…

网安学习(js漏洞挖掘)

内容来自bili白帽大法师白帽大法师的个人空间-白帽大法师个人主页-哔哩哔哩视频 (bilibili.com) 四种方式 目录 1、JS中存在插件名字&#xff0c;根据插件找到相应的漏洞直接利用 2、JS中存在一些URL链接&#xff0c;根据URL链接找到相应的页面进一步测试和利用 3、JS中存…

django的URL配置

1 django如何处理一个请求 首先Django要使用根URLconf模块&#xff0c;通过setting.py配置文件的ROOT_URLCONF来设置。 加载该模块后并查找变量 urlpatterns。这是一个Python的django.conf.urls.url()实例列表。 Django按顺序运行每个URL模式&#xff0c;并在匹配所请求的…

Ubuntu上安装Git:简单步骤指南

Git是目前世界上最流行的版本控制系统&#xff0c;广泛用于软件开发中。无论你是开发者还是版本控制的新手&#xff0c;Git都是你不可或缺的工具。本文将为你介绍如何在Ubuntu操作系统上安装Git。 什么是Git&#xff1f; Git是一个开源的分布式版本控制系统&#xff0c;由Lin…

C语言+电焊

啊啊啊&#xff0c;今天又是快乐的一天&#xff01;祝大家节日快乐 C语言 今天也是把丢失的C语言拾起来了&#xff0c;做了一下习题回顾 3.偶数和&#xff08;for循环if条件&#xff09; 注意for/if一类的判断语句后面添加分号会自动忽略语句 for(int i1;i<22;i); {if(i…

微信小程序实战教程:轻松实现列表批量选择功能

在许多场景下&#xff0c;用户需要对列表中的多项内容进行操作&#xff0c;如批量删除、批量下载等。为了满足这一需求&#xff0c;我们需要在微信小程序中实现列表批量选择功能。具体要求如下&#xff1a; 用户可以逐个选择列表项&#xff0c;也可通过全选按钮快速选择所有列表…