MongoDB的入门及使用

news2024/11/16 16:02:02

文章目录

  • 1、MongoDB组成
  • 2、基本指令
  • 3、安装Studio 3T
  • 4、操作语句
    • db操作
    • collection操作
    • document操作
    • document 查询
  • 5、开发使用

1、MongoDB组成

MongoDB中有三个概念需要大家了解:数据库、集合、文档
数据库database: 数据库是一个仓库,在仓库中可以存放集合。
集合collection: 集合类似于数据,在集合中可以存放文档
文档document: 文档是最小的单位,存储和操作的内容就是文档

document这一点类似于ES中的数据结构。

2、基本指令

在这里插入图片描述

3、安装Studio 3T

NoSql Manager for MongoDB收费,在这里我使用的是Studio 3T

https://robomongo.org/

下载无脑下一步
在这里插入图片描述

4、操作语句

db操作

显示数据库

show dbs

切换数据库,没有就新建一个

use admin

显示你在哪个数据库里

Db

删除当前你use的那个数据库

db.dropDatebase()

新建数据库

use 数据库名字

建完了show dbs不会立刻显示,因为刚才新建的数据库里面没有数据。所以显示不出来。

collection操作

显示这个数据库中有什么集合

show collections

新建集合,在use 一个数据库的情况下

db.createCollections(name,options)

然后show dbs现在可以看到use的数据库了
删除集合 ,在现在这个Use的数据库的情况下

db.你想要的collectionname.drop()

然后就删掉了

document操作

collectionname代指相对应的collcetion名字(mysql里叫表,Mongodb里叫collection,都是一个数据库里的一种结构) 现在操作的不是表也不是集合,而是集合里的一个数据结构叫做document,文档,文档相当于mysql里的一个记录行。

往collection里加数据,直接新建document

db.collectionname.insert({"name":"wangzirui"})

增加多条要在insert的多个对象的外面加一个中括号,表示这是一个对象数组。

db.collectionname.insert([{name:"wangzirui"},{name:"laoli"}])

查看collection里的数据

db.collectionname.find()

Save,在_id一样的情况下可以不报错,然后直接覆盖掉刚才重复Id的内容。

db.collectionsname.save({_id:1001,name:"laowang",age:22})

更新document数据

db.collectionname.update({当前数据},{替换数据},{配置项})
db.collectionname.update({name:"laotie"},{name:"ergou"})

这样会删除其他内容,只存在一个name :ergou 所以要加$set保留其他的参数

db.collectionname.update({name:"laotie"},{$set:{name:"ergou"}})

配置项里加{Multi:true}加一个这个的话可以让多个name:"laotie"一起改

db.collectionname.update({name:"laotie"},{$set:{name:"ergou"}},{multi:true})

删除document内容,如果不加第二个参数,默认是把集合里的符合第一条的都删掉。

Db.collectionname.remove({name:"laotie"},{justOne:true})

document 查询

经过上面的讲述,能了解到一点,基于database来查询collections里的数据都是通过db.collcetion_name.方法 来进行操作的,同理。对document的查询,我们之前也在查看collection时用过,他就是find()方法。

find里面可以加参数,不加的话就是现实collection里所有的document。

  • find()方法里可以加条件,例如db.collectionname.find({age:18})

如果一行一行的话不好看,可以再db.collectionname.find({age:18})后面加.pretty()

  • 比较运算符

less than 小于 KaTeX parse error: Expected '}', got 'EOF' at end of input: …name.find(age:{lt:18})
less than equal 小于等于 $lte
Geater than 大于 $gt
$gte 大于等于
$ne 不等于

  • 取范围内的 $in

KaTeX parse error: Expected '}', got 'EOF' at end of input: …ame.find({age:{in:[10,20,30]}})

  • 并操作

db.collection_name.find(age:18,name:“laotie”)

  • 或操作

db.collection_name.find({$or:[{age:18},{name:“laotie”}]}

  • 正则

db.collection_name.find({age:/1/})或者db.collection_name.find({age:$regex:“1”})

  • 限制和跳过,一般用于分页

limit(2)
skip(2)

  • 投影

比如说find({这里放具体参数},{这里放投影})
db.collection_name.find({age:{$lt:18}},{_id:0,age:1}) 这样只会显示每个对象里面只有一个age选项了
注意,如果投影里不加_id的选项的话 ,默认是自动显示的。只能给_id设置 0。如果别的字段不想让他显示直接不在里面加。其他的想要显示的话直接把属性加进去就行了。

  • 通过Js函数来筛选数据

KaTeX parse error: Expected '}', got 'EOF' at end of input: …ion_name.find({where:function(){
Return age>10}})

  • 根据某个字段排序

sort
db.collection_name.find().sort({age:1}) 如果降序的话要带-1

  • 计数

count()
直接在查询出来的后面加上就可以显示了
db.collection_name.find({$where:function(){
Return age>10}}).count()

  • 去重

db.student.distinct(“name”,{“age” : 18})
这样可以直接把name一样还有age为18的都给去重

5、开发使用

导入依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

在配置文件中配置链接:

spring:
 data:
  mongodb:
   uri: mongodb://${base.config.mongodb.user}:${base.config.mongodb.password}@${base.config.mongodb.hostname}:${base.config.mongodb.port}/admin

将依赖在项目中注入

	@Resource
	private MongoTemplate mongoTemplate;

简单使用:
插入:spillwayGate为插入的对象

mongoTemplate.insert(spillwayGate, "OPCGate");

计数:

mongoTemplate.count(query, "OPCGate")

等等…看后面的文章

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

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

相关文章

【Docker】安装容器(Tomcat/MySQL/Redis)

文章目录Docker安装镜像容器安装 Tomcat安装 MySQL安装 MySQL实战版安装 RedisDocker安装镜像容器 步骤 搜索镜像 拉取镜像 查看镜像 启动镜像 - 服务端口映射 停止容器 移除容器 安装 Tomcat 1、DockerHub上查找Tomcat镜像 docker search tomcat 2、从DockerHub拉取Tomcat镜…

volatile synchronized Lock

参考博客&#xff1a;https://www.cnblogs.com/cg-ww/p/14540450.html https://zhuanlan.zhihu.com/p/563597528?utm_id0 synchronized修饰变量&#xff0c;https://blog.csdn.net/dlf123321/article/details/53515756 详解synchronized关键字&#xff0c;https://zhuanlan.zh…

一文回顾Aleo到底有多卷

年底的Aleo是区块链行业的一场大事&#xff0c;由于融资超过两亿美元这样的光环围绕&#xff0c;Aleo出道即备受关注&#xff0c;网上不少教程也是满天飞&#xff0c;甚至在激励测试开始之前&#xff0c;就已经非常卷了&#xff0c;而大家都在认为激励测试在两三周之后开始&…

java swing(GUI) mysql实现的酒店管理系统源码文档教程

今天给大家演示一下由我修订开发的一款由Java swing mysql实现的酒店管理系统&#xff0c;以前是sqlserver版本的&#xff0c;我修改了驱动&#xff0c;做了整体升级&#xff0c;改成了mysql版本的&#xff0c;系统功能非常完善&#xff0c;实现了酒店宾馆日常的所有操作功能&a…

28-Vue之ECharts-折线图

ECharts-折线图前言折线图特点折线图实现步骤折线图常见效果标记线条控制填充风格紧挨边缘缩放, 脱离0值比例堆叠图前言 本篇来学习下折线图的实现 折线图特点 折线图更多的使用来呈现数据随时间的变化趋势 折线图实现步骤 ECharts 最基本的代码结构准备x轴的数据准备 y 轴…

高级网络应用复习——三层和生成树实验 加 命令

作者简介&#xff1a;一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.实验 1. 实验要求 2.实验命令 三层配置 和三层交换机连接…

双十二有哪些高性价比的电容笔?十大电容笔知名品牌

任何东西都有它独特的意义、存在和作用。随着ipad的影响力越来越大&#xff0c;ipad的用户数量也越来越多&#xff0c;所以要提高ipad的性能&#xff0c;就需要一款合适的电容笔。那么&#xff0c;电容笔该选择哪个品牌&#xff1f;我将向大家推荐几款性价比高的电容笔&#xf…

PPa-HA/NH2/NHS/MAL焦脱镁叶绿酸-a修饰叶酸/氨基/活性酯/马来酰亚胺的反应

小编下面给大家分享的科研内容是类PPa-HA/NH2/NHS/MAL焦脱镁叶绿酸-a修饰叶酸/氨基/活性酯/马来酰亚胺的反应&#xff0c;和小编一起来看看&#xff01; PPa-HA焦脱镁叶绿酸-a修饰叶酸的反应&#xff1a; 以脱镁叶绿酸-a甲酯为起始原料,在二氯甲烷中于不同温度下与N-溴代丁二酰…

ChatGPT面试阿里P6测试开发岗能过吗?

最近ChatGPT爆火&#xff0c;ChatGPT能干什么呢&#xff1f;想必已经看过很多文章了&#xff0c;例如ChatGPT通过美国高考、ChatGPT开发游戏、调试代码、写文章等等。 哈哈&#xff0c;作为一个软件测试博主&#xff0c;我怎么可能不出来搞点事情呢&#xff1f;突发奇想&#…

SpringBoot集成Swagger3接口文档及添加Authorization授权

swagger可以为前端提供接口文档及接口测试功能&#xff0c;后端集成起来很方便&#xff0c;对代码也没有入侵&#xff0c;全注解完成&#xff0c;非常好用。 一、集成基础功能 第一步、添加依赖 <!-- swagger3 --><dependency><groupId>io.springfox</g…

28845-97-8,Ac-K-DAla-DAla-OH

Ac-Lys-D-Ala-D-Ala was tested as substrate in a substrate specificity study of the Streptomyces albus DD-carboxypeptidase. 以Ac-Lys-D-Ala-D-Ala为底物&#xff0c;对albus链霉菌dd -羧肽酶进行底物特异性研究。 编号: 172467中文名称: 三肽D丙氨酸羧肽酶底物CAS号: 2…

块交织器5×5 verilog设计及仿真实现

设计题目要求: 本设计基于verilog语言实现,在quartus II下仿真实现: 仿真如下: 全部代码如下: library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity decoder is --实体说明 port(datain,clk,clr:IN…

汽车轻量化 | 某SUV车型白车身的轻量化分析案例

作者 | 王山 仿真秀科普作者 导读&#xff1a;轻量化是当今各整车厂在产品开发中无法回避的问题。当考虑到成本与工艺方面时&#xff0c;更是不容易解决的问题。对于高端车型&#xff0c;其较高的设计与生产成本允许其采用先进的轻量化设计与生产工艺&#xff0c;如碳纤维复合…

函数:先序输出叶结点

问题引入 【问题描述】按照先序遍历的顺序输出给定二叉树的叶结点。 【输入形式】以字符形式输入二叉树的结点序列 输入的字符序列为&#xff1a;ABC##DE#G##F### 【输出形式】输出二叉树中叶子结点的先序序列 【样例输入】 ABC##DE#G##F### 【样例输出】 CGF 【输出形式】输出…

分布式操作系统 - 8.分布式容错管理

文章目录1.容错性概述1.1 基本概念1.2 失效&#xff08;失败&#xff09;类型1.3 失效&#xff08;失败&#xff09;模型&#xff08;halting failure&#xff09;1.4 基于冗余的失效屏蔽技术&#xff08;1&#xff09;冗余类型&#xff08;2&#xff09;三模冗余方法&#xff…

java计算机毕业设计ssm影院售票系统6fg71(附源码、数据库)

java计算机毕业设计ssm影院售票系统6fg71&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。…

国外Essay写作实用型技巧怎么学习?

在国外大学的学习期间&#xff0c;想必留学生对Essay是非常熟悉的&#xff0c;因为这是我们无法逃避的作业类型之一。当然&#xff0c;印象最深刻的还是大家刚开始写作Essay的时候&#xff0c;那时候真的是苦不堪言。下面就给大家分享一些Essay写作的实用型技巧&#xff0c;希望…

技术分享 | 无root权限也能高效搭建ClickHouse集群?

本文来自于擎创资深数据库工程师------禹鼎侯 写在前面&#xff1a; 本次技术分享主要介绍ClickHouse集群的tgz方式无root部署的实现思路&#xff0c;以及使用ckman如何快速地不用root权限搭建clickhouse集群。文章较长&#xff0c;干货很多&#xff0c;建议先收藏点赞以防丢失…

wireshark提取RTSP over TCP中的视频流

wireshark提取RTSP over TCP中的视频流 文章目录wireshark提取RTSP over TCP中的视频流1 背景2 提取前准备3 H264提取步骤4 后记1 背景 前面文章中介绍了rtp中提取H264或者H265视频的方式&#xff0c;其适用于基于RTP over UDP的方式&#xff0c;因为UDP方式&#xff0c;视频流…

ip 地址分类说明

1,IP地址简介 前面我们已经了解了TCP/IP协议的网络层的相关协议&#xff0c;并且已经在OSI参考模型中了解到每一个协议栈的网络层都有网络层地址&#xff0c;TCP/IP协议也不例外。本节重点介绍TCP/IP协议栈的网络层地址------IP地址。IP地址是进行复杂的子网规划的基础。 我们前…