mongodb光速上手

news/2024/10/7 20:17:02 标签: mongodb, nosql, 编辑器

 开始

        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.niftyadmin.cn/n/5693321.html

相关文章

智慧学生宿舍管理平台|学生宿舍管理平台系统|基于Springboot+VUE的智慧学生宿舍管理平台系统设计与实现(源码+数据库+文档)

智慧学生宿舍管理平台 目录 基于SpringbootVUE的智慧学生宿舍管理平台系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕…

开源跨平台三维模型轻量化软件osgGISPlugins-1、简介

下一篇文章&#xff1a;开源跨平台三维模型轻量化软件osgGISPlugins-2、如何编译 1、仓库地址 github地址&#xff1a;https://github.com/newpeople123/osgGISPlugins gitee地址&#xff1a;https://gitee.com/wtyhz/osg-gis-plugins 2、项目简介 osg引擎的gis插件&#x…

AAA Mysql与redis的主从复制原理

一 &#xff1a;Mysql主从复制 重要的两个日志文件&#xff1a;bin log 和 relay log bin log&#xff1a;二进制日志&#xff08;binnary log&#xff09;以事件形式记录了对MySQL数据库执行更改的所有操作。 relay log&#xff1a;用来保存从节点I/O线程接受的bin log日志…

如何使用ssm实现基于Java的校园二手物品交易平台的设计与实现+vue

TOC ssm789基于Java的校园二手物品交易平台的设计与实现vue 绪论 1.1 研究背景 在这个推荐个性化的时代&#xff0c;采用新技术开发一个校园二手物品交易平台来分享和展示内容是一个永恒不变的需求。本次设计的校园二手物品交易平台有管理员&#xff0c;商家&#xff0c;用…

EmEditor传奇脚本编辑器

主程序&#xff1a;EmEditor.exe 目前已有功能 可以自己指定一个快捷键 实现以下功能&#xff08;默认快捷键为&#xff1a;F1&#xff09; 以下全功能 都是鼠标所在行 按快捷键 &#xff08;默认快捷键&#xff1a;F1&#xff09; 1.在Merchant.txt中 一键打开NPC 没有…

2020大厂web前端面试常见问题总结

本篇收录了一些面试中经常会遇到的经典面试题以及自己面试过程中遇到的一些问题。通过对本篇知识的整理以及经验的总结&#xff0c;希望能帮到更多的前端面试者。 1.web前端项目的结构是怎样的&#xff1f;文件有哪些命名规范&#xff1f; 项目结构规范 页面文件&#xff1a;以…

深度学习:Anaconda的作用

Anaconda介绍 Anaconda 是一种流行的 Python 发行版本&#xff0c;专为科学计算、数据分析、机器学习等领域设计。它由以下几个主要组件组成&#xff0c;每个组件都发挥着重要作用&#xff1a; 组件&#xff1a; Conda&#xff1a; 功能&#xff1a;Conda 是一个包管理器和环…

深度解析内网横向移动及防御策略

随着信息技术的飞速发展&#xff0c;企业内网已成为业务运营的核心支柱&#xff0c;承载着大量敏感数据和关键业务逻辑。然而&#xff0c;与此同时&#xff0c;网络攻击技术也在不断演进&#xff0c;特别是横向移动攻击&#xff0c;已成为高级威胁者渗透和实现远控的必要手段。…