MongoDB的操作和理解

什么是MongoDB?

MongoDB:基于分布式文件存储的数据库由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB的优点:

  1. MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。

  2. 如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所谓的分片。

  3. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

  4. 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

为什么学习MongoDB?

MongoDB解决Mysql 的“三高”问题:

  1. 对数据库高并发写入需求
  2. 对海量数据高效率存储访问需求
  3. 对数据库高扩展和高可用的需求

MongoDB的缺点:

  • MongoDB 不支持事务
  • MongoDB 不能进行多表联查

MongoDB名词概念

SQL术语MongoDB术语解释说明
databasedatabase数据库
tablecollection数据库表
rowdocument数据记录行
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键啊,MongoDB自动将_id字段设置为主键

MongoDB数据库创建/删除

创建数据库: use dbname

如果数据库不存在,则创建数据库,否则切换到指定数据库。

在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

通过 db 来查看当前使用的数据库

删除数据库

db . dropDatabase()

MongoDB操作集合

  • 创建集合:

    db.createCollection(“集合名”)
    
  • 查看集合:

    show collections / show tables
    
  • 删除集合:

    db.集合名.drop()
    

MongoDB在集合中插入数据

  • 插入的数据被称为文档。
  • 文档的数据结构和 JSON 基本一样。
  • 所有存储在集合中的数据都是 BSON 格式。
  • BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。
db.col.insert({title: '一些数据', 
	description: 'MongoDB 是一个 Nosql 数据库',
	tags: ['mongodb', 'database', 'NoSQL']
})

MongoDB在集合中更新数据

更新数据:

db.集合名.update({查询条件},{$set:{更新内容}},
	{
		upsert: <boolean>,
		multi: <boolean>,
	}
)

upsert: 默认为false ,如果查询不到数据,则把跟新输入插入

multi:默认为false,默认只改一条,true,更改多条

db.col.update({'name':'张三'},{$set:{'name':'张三丰'}})
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},{multi:true})
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},{upsert:true,multi:true})

MongoDB在集合中删除文档

  • 删除文档:

    db.集合名称.remove(
    	<query>,
    	{
    		justOne: <boolean>
    	}
    )
    
  • 删除所有数据:

    db.col.remove({})
    
  • 删除一条数据:

    db.col.remove({“name”:”张三”},{justOne:true})
    
  • 删除多条数据

    db.col.remove(“name”:”张三”})
    

MongoDB在集合中查询文档

  • MongoDB 查询文档使用 find() 方法。

  • find() 方法以非结构化的方式来显示所有文档。

    db.collection.find(query)
    
  • pretty() 方法以格式化的方式来显示所有文档,linux下有用。

    db.col.find().pretty()
    
MongoDB查询条件

在这里插入图片描述

MongoDB的 And条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

db.col.find({key1:value1, key2:value2})
MongoDB的 Or条件

MongoDB OR 条件语句使用了关键字 $or

db.col.find(
	{
		$or: [
			{key1: value1}, {key2:value2}
		]
	}
)
MongoDB的 And 与 Or 一起使用

AND 和 OR 联合使用,类似常规 SQL 语句为:

where key1>value1 AND (key2 = value2 OR key3 = value3)
db.col.find({“key1": {$gt:value1}, $or: [{“key2": “value2"},{“key3": “value3"}]})
MongoDB范围条件

col"集合中 “key" 大于100,小于 200 的数据

> db.col.find({“key” : {$lt :200, $gt : 100}})

相当于RDBMS:

Select * from col where key>100 AND key<200;
MongoDB的模糊查询
  • 查询 name 包含“小"字的文档:

    db.col.find({“name”:/小/})
    
  • 查询 name 字段以“小"字开头的文档:

    db.col.find({“name”:/^小/})
    
  • 查询 name字段以“小"字结尾的文档:

    db.col.find({“name”:/小$/})
    
MongoDB的Limit 和 Skip操作

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

> db.col.find().limit(NUMBER)

我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

> db.col.find().limit(NUMBER).skip(NUMBER)
MongoDB的统计

在 MongoDB 中使用count() 来统计个数

>db.col.count(【{key:value}】)
MongoDB的排序

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

>db.col.find().sort({KEY:1})

``

MongoDB的统计

在 MongoDB 中使用count() 来统计个数

>db.col.count(【{key:value}】)
MongoDB的排序

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

>db.col.find().sort({KEY:1})

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Webshell一句话木马

一、webshell介绍&#xff08;网页木马&#xff09; 分类&#xff1a; 大马&#xff1a;体积大、隐蔽性差、功能多 小马&#xff1a;体积小&#xff0c;隐蔽强&#xff0c;功能少 一句话木马&#xff1a;代码简短&#xff0c;灵活多样 二、一句话木马&#xff1a; &#xff1a;…

Java开发IntelliJ IDEA2023

IntelliJ IDEA 2023是一款强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为Java开发人员设计。它提供了许多特色功能&#xff0c;帮助开发人员更高效地编写、测试和调试Java应用程序。以下是一些IntelliJ IDEA 2023的特色功能&#xff1a; 智能代码编辑器&…

2024年烟花爆竹经营单位主要负责人证模拟考试题库及烟花爆竹经营单位主要负责人理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年烟花爆竹经营单位主要负责人证模拟考试题库及烟花爆竹经营单位主要负责人理论考试试题是由安全生产模拟考试一点通提供&#xff0c;烟花爆竹经营单位主要负责人证模拟考试题库是根据烟花爆竹经营单位主要负责人…

ChatGPT高效提问—prompt基础

ChatGPT高效提问—prompt基础 ​ 设计一个好的prompt对于获取理想的生成结果至关重要。通过选择合适的关键词、提供明确的上下文、设置特定的约束条件&#xff0c;可以引导模型生成符合预期的回复。例如&#xff0c;在对话中&#xff0c;可以使用明确的问题或陈述引导模型生成…

如何使用Python + 百度翻译API 自动大批量免费翻译Excel文件中的外语内容

手里有一个Excel文件,包括了大量的亚马逊德语搜索词(关键词),每个单元格1个,需要翻译为中文。但是文件大小超过了10M,不能使用百度或Google免费的文档功能,如果手工一个个的翻译然后粘贴又太麻烦,于是想到用Python加免费翻译API完成。 一、openpyxl库 用Python编辑处…

【Zookeeper】what is Zookeeper?

官网地址&#xff1a;https://zookeeper.apache.org/https://zookeeper.apache.org/ 以下来自官网的介绍 ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. A…

【产品经理进阶】也许这就是复盘的意义

目录 简介 复盘 内容情况 1. 华为流程体系入门课 2. 产品经理进阶课 3. BLM 战略方法论进阶课 4. IPD 进阶 100 例专栏 作者简介 简介 随着春节的临近&#xff0c;所有人都开始了一场奔赴。 春节对于国人是含有一种情感的。 更大的意义在于他的这种辞旧迎新的承接性…

IDEA创建SpringBoot+Mybatis-Plus项目

IDEA创建SpringBootMybatis-Plus项目 一、配置Maven apache-maven-3.6.3的下载与安装&#xff08;详细教程&#xff09; 二、创建SpringBoot项目 在菜单栏选择File->new->project->Spring Initializr&#xff0c;然后修改Server URL为start.aliyun.com&#xff0c…

centos 7.6 安装 openldap 2.5.17

centos 7.6 安装ldap 1、下载ldap2、安装ldap2.1、官方参考文档2.2、安装前准备2.2.1、安装gcc2.2.2、安装Cyrus SASL 2.1.272.2.3、安装OpenSSL 1.1.12.2.3.1、下载openssl 3.02.2.3.2、安装依赖包2.2.3.3、编译安装openssl 3.0 2.2.3、安装libevent 2.1.82.2.4、安装libargon…

【webpack】优化提升

webpack优化提升 安装webpack相关内容向下兼容游览器-babel/polyfill进一步优化babel/polyfill模块联邦-共享模块如何提升构建性能通用环境下1&#xff0c;webpack更新到最新版本2&#xff0c;将loader应用于最少数量的必要模块3&#xff0c;引导&#xff08;每个额外的loader/…

如何正确理解和获取S参数

S参数是网络参数&#xff0c;定义了反射波和入射波之间的关系&#xff0c;给定频率的S参数矩阵指定端口反射波b的矢量相对于端口入射波a的矢量&#xff0c;如下所示&#xff1a; bS∙a 在此基础上&#xff0c;如下图所示&#xff0c;为一个常见的双端口网络拓扑图&#xff1a;…

Mysql索引优化建议

1&#xff0c;最左前缀法则 如果为一张表创建了多列的组合索引&#xff0c;要遵守最左前缀法则。就是指查询从索引的最左前列开始并且不要跳过索引中的列。&#xff08;因为Mysql的InnoDB引擎的索引树是一个按顺利排序存储的数据结构&#xff08;BTREE&#xff09;&#xff0c…

Java-并发高频面试题-2

接着之前的Java-并发高频面试题 7. synchronized的实现原理是怎么样的&#xff1f; 首先我们要知道synchronized它是解决线程安全问题的一种方式&#xff0c;而具体是怎么解决的呢&#xff1f;主要是通过加锁的方式来解决 在底层实现上来看 是通过 monitorenter、monitorexit…

goland中快捷关键词forr、main等不生效的问题记录

平时用的较多的一些快捷关键词&#xff0c;如forr会提示range循环并通过回车可自动打出来&#xff0c;main会提示main函数并通过回车可自动打出来&#xff0c;这种快捷处理能极大的提高编码效率。 但由于之前更改了一些配置&#xff0c;可能有的被覆盖失效了&#xff0c;重新修…

第1节、电路连接【51单片机+L298N步进电机系列】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍如何搭建一个51单片机L298N步进电机控制电路&#xff0c;所用材料均为常见的模块&#xff0c;简单高效的方式搭建起硬件环境。 一、硬件清单 ①51单片机模块 ②恒流模块 ③开关电源 ④L298N模…

7.0 Zookeeper 客户端基础命令使用

zookeeper 命令用于在 zookeeper 服务上执行操作。 首先执行命令&#xff0c;打开新的 session 会话&#xff0c;进入终端。 $ sh zkCli.sh 下面开始讲解基本常用命令使用&#xff0c;其中 acl 权限内容在后面章节详细阐述。 ls 命令 ls 命令用于查看某个路径下目录列表。…

Innodb索引页文件结构

Innodb索引页文件结构 首先Mysql的基本存储结构是页&#xff0c;Mysql中的存取数据是按照页进行存取的&#xff0c;在查找数据的时候是需要先定位到记录所在页&#xff0c;再从所在页中查找到相应的记录 数据页以一个双向链表维持着顺序&#xff0c;每个数据页以单向链表的格式…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RichText组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之RichText组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、RichText组件 鸿蒙&#xff08;HarmonyOS&#xff09;富文本组件&#xff0c;…

CentOS基于volatility2的内存取证实验

CentOS&#xff0c;Redhat和Fedora 都是Red Hat体系&#xff0c;采用yum管理器&#xff0c;不同于Debian、Ubuntu作为Debian体系使用apt 本文以CentOS为例&#xff0c;采用avml制作内存镜像&#xff0c;并利用volatility官方所给工具制作profile符号文件&#xff0c;进行简单的…

synchronized内部工作原理

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;javaee等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; synchronized内部工作原理 syn…