MongoDB超全语法大全

news2024/10/7 19:36:10

MongoDB 安装教程

一、介绍

mongodb数据库是非关系数据库,mongodb中没有表的概念,数据都是存储在集合中

  1. 易扩展: NoSQL数据库种类繁多, 但是⼀个共同的特点都是去掉关系数据库的关系型特性。 数据之间⽆关系, 这样就⾮常容易扩展
  2. ⼤数据量, ⾼性能: NoSQL数据库都具有⾮常⾼的读写性能, 尤其在⼤数据量下, 同样表现优秀。 这得益于它的⽆关系性, 数据库的结构简单
  3. 灵活的数据模型: NoSQL⽆需事先为要存储的数据建⽴字段, 随时可以存储⾃定义的数据格式。 ⽽在关系数据库⾥, 增删字段是⼀件⾮常麻烦的事情。 如果是⾮常⼤数据量的表, 增加字段简直就是⼀个噩梦
二、数据类型
  1. Object ID:文档ID
  2. String:字符串 该属性是最常用的数据类型,并且为一个有效的UTF-8字符集
  3. Boolean:存储一个布尔值,true或者false
  4. Integer:整数 可以是32位或64位,取决于服务器
  5. Double:浮点值
  6. Arrays:数组或列表,多个值存储到一个键
  7. Object:用于嵌入式的文档,即一个值为一个文档
  8. Null:Null值
  9. Timestamp: 时间戳 表示1970-1-1到现在的总秒数
  10. Date:存储当前日期或时间的UNIX时间格式
三、登录(使用可视化工具,可忽略)
mongosh
mongosh -u 用户名 -p 密码 --port 端口号 --host ip 数据库名
mongosh ip:port/数据库 -u 用户名 -p 密码
mongosh --port=27017 --host=127.0.0.1
四、DadaBase基础命令
查看当前数据库: db
查看所有的数据库: show dbs
切换数据库,数据库不存在会创建数据库: use db_name
删除当前数据库: db.DropDatabase()
查看集合:show collections
获取集合,集合不存在则创建集合:db.getCollection(collection_name)
创建用户密码:db.createUser({
  user: 'admin',  // 用户名
  pwd: '123456',  // 密码
  roles:[{
    role: 'root',  // 角色---超级管理员才可以使用该角色
    db: 'admin'  // 数据库
  }]
})
显示当亲库下的用户:show users 
删除用户:db.dropUser(useName) 或者 db.collection.users.remove({user:useName})

'''
用户角色:
read:允许用户读取指定数据库 
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限 
'''
五、操作符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、集合创建,类似mysql中的表
  1. db.createCollection(name, options) 创建集合:db.createCollection(‘test’)
  • name: 要创建的集合名称
  • options: 可选参数, 指定有关内存大小及索引的选项
    在这里插入图片描述
  1. db.collection.drop() 删除集合:db.test.drop()
七、创建数据
  1. db.collection.insert(document | [[document], options) 若插入的数据主键已经存在,会抛异常,不保存当前数据
  • document:创建的数据,格式键值对:{name:‘张三’}
  • options: 可选参数
    在这里插入图片描述
  1. db.collection.save(document, options) 如果 _id 主键存在则更新数据,如果不存在就插入数据
  2. db.collection.insertMany([document], options) 用于向集合插入一个多个文档
  3. db.collection.insertOne(document, options) 用于向集合插入一个新文档
八、更新数据
  1. db.collection.update(query,update,options) 根据query条件,更新数据为update
  • query : update的查询条件,类似sql update查询内where后面的,格式键值对:{name:‘张三’}
  • update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的,格式键值对:{name:‘李四’,age:20}
  • options: 可选参数
    在这里插入图片描述
  1. db.collection.updateOne(query,update,options) 更新一条数据,update必须加操作符,如:{$set:{name:‘王五’}}
  2. db.collection.updateMany(query,update,options) 更新多条数据,update必须加操作符,如:{$set:{name:‘王五’}}
  3. db.collection.replaceOne(query,replaceDocument,options) 根据筛选器替换集合中的单个文档
九、删除数据
  1. db.collection.remove(query, options) 根据query条件,删除数据
  • query : update的查询条件,类似sql update查询内where后面的,格式键值对:{name:‘张三’}
  • options: 可选参数
    在这里插入图片描述
  1. db.collection.deleteMany(query) 删除多条数据
  2. db.collection.deleteOne(query ) 删除一条数据
十、获取数据
  1. db.collection.find(query, projection)
  • query : update的查询条件,类似sql update查询内where后面的,格式键值对:{name:‘张三’},不传查全部
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)
  1. db.collection.findOne(query, projection) 查找一条数据
  2. db.collection.findAndModify(document) 查找多条数据并修改
  3. db.collection.findOneAndDelete(query, options) 查找一条数据,并删除
  4. db.collection.findOneAndUpdate(query, update, options) 查找一条数据并更新,db…collection.findOneAndUpdate({name:‘test0’},{$set:{name:‘test’,age:21}})
  5. db.collection.findOneAndReplace(query, replaceDocument, options) 查找一条数据并替换 db.test_data.findOneAndReplace({name:‘test’},{name:‘test0’,age:21})
  6. db.collection.find(query, projection).limit(number) 读取指定数量的⽂档
  7. db.collection.find(query, projection).skip(number) 读取除number前面的全部文档
  8. db.collection.find(query, projection).sort(number) 排序,db.collection.sort({age: -1}):1为升序,-1为降序
  9. db.collection.find(query, projection).count(query) 统计数量,query可省略
  10. db.collection.find(query, projection).explain(‘executionStats’) 获取查询数据所花费的时间
  11. db.collection.aggregate({管道:{表达式}}) 聚合(aggregate)是基于数据处理的聚合管道
  12. db.collection.distinct(col_name,query) 数据去重
十一、索引

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录

  1. db.collection.createIndex(keys, options) 创建索引
  • key:为你要创建的索引字段,1 按升序创建索引、 -1按降序来创建索引,{name: 1}
  • options:可选参数
    在这里插入图片描述2. db.collection.ensureIndex({name: 1}) 建立索引
  1. db.collection.getIndexes() 获取索引
  2. db.collection.totalIndexSize() 查看集合索引大小
  3. db.collection.dropIndexes() 删除集合所有索引
  4. dbcollection.dropIndex(‘索引名称’) 删除集合指定索引

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

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

相关文章

如何运行Node.js脚本及读取环境变量

目录 1、如何从CLI 运行Node.js 脚本 2、将字符串作为参数传递到节点,而不是文件路径 3、自动重新启动应用程序 4、如何从Node.js中读取环境变量 1、如何从CLI 运行Node.js 脚本 运行Node.js程序的通常方法是运行全局可用的Node命令(一旦安装Node.js…

[论文分享] When deep learning met code search

When deep learning met code search [ESEC/FSE 2019] Jos Cambronero MIT CSAIL U.S.A. Hongyu Li Facebook, Inc. U.S.A. SeohyunKim Facebook,Inc. U.S.A. KoushikSen EECSDepartment,UCBerkeley U.S.A. SatishChandra Facebook,Inc. U.S.A. 最近有多个关于使用深度神经网…

ASP.NET 未能找到类型或命名空间名称“HttpRequestMessage”

引入System.Net.Http后,运行页面还是报错 using System.Net.Http;chatGPT解释需要安装Microsoft.AspNet.WebApi.Client包,IIS安装的包文件存储在bin目录下,安装包后bin目录多出了一些列文件 运行页面后还是报错 需要在web.config配置文件…

【ISO14229_UDS刷写】-6-$34,$35,$36,$37诊断服务用于downloading下载/uploading上载数据的消息流示例

总目录:(单击下方链接皆可跳转至专栏总目录) 《UDS/OBD诊断需求编辑工具》总目录https://blog.csdn.net/qfmzhu/article/details/123697014【ISO14229_UDS刷写】-1-$34诊断服务RequestDownload理论部分https://blog.csdn.net/qfmzhu/article…

VM600 CPUR2 机架控制器和通信接口卡

VM600 CPUR2和IOCR2机架控制器和通信接口卡对是一个中央处理器(CPU)卡对,作为Meggitt振动计产品线中VM600机架机械保护系统(MPS)和/或状态监控系统(CMS)的系统控制器和数据通信网关。 注:不同版本的CPUx/IOCx框架控制器和通信接口卡对可用,如下所示: C…

初探 Compose for Wear OS:实现一个简易选择APP

前言 俗话说,人生有三大难题:早上吃啥、中午吃啥、晚上吃啥。 这个问题一度困扰着无数的人,直到一款帮你选择吃什么的神器《今天吃啥》出现,人们再也不用为了每天吃啥而犯愁了。 哈哈,以上纯属抖机灵。 最近访问谷歌…

Spring MVC数据绑定和响应

数据绑定 在程序运行时,Spring MVC接收到客户端的请求后,会根据客户端请求的参数和请求头等数据信息,将参数以特定的方式转换并绑定到处理器的形参中。Spring MVC中将请求消息数据与处理器的形参建立连接的过程就是Spring MVC的数据绑定。 …

电力监控系统在中原科技城智慧能源配电工程中的应用

摘 要:随着社会经济的快速发展,我国变电站正朝着现代化的方向不断发展,自动化设备以及继电保护装置凭借自身优异性能而获得广泛应用。本文介绍的AM5SE系列的微机保护装置,可以针对中原科技城智慧能源配电工程中不同保护对象提供对…

真无线蓝牙耳机什么牌子好?盘点五款质量好的蓝牙耳机

相信很多人都有过这样的经历,早 晚高峰像沙丁鱼般被挤在公交或地铁上,嘈杂的环境、工作的劳累让你只想听听音乐追追剧,给自己一些放松的时光。可拿出有线耳机却常常被挤掉,更有被扯到耳朵的时候。想换一款蓝牙耳机,但面…

Kubernetes 证书详解

K8S 证书介绍 在 Kube-apiserver 中提供了很多认证方式,其中最常用的就是 TLS 认证,当然也有 BootstrapToken,BasicAuth 认证等,只要有一个认证通过,那么 Kube-apiserver 即认为认证通过。下面就主要讲解 TLS 认证。 …

chatgpt赋能python:Python动作捕捉:何为动作捕捉及其应用

Python动作捕捉:何为动作捕捉及其应用 介绍 动作捕捉是一种技术,可将人或物体的运动转换为数字形式。在过去的几十年里,动作捕捉已被广泛应用于电影制作、游戏开发、医学研究等领域。 Python是一种功能强大的编程语言,已成为许…

AI 工具分享第 4 期:13 款国外免费AI视频生成工具

0. 未来百科 未来百科,是一个知名的AI产品导航网站 —— 为发现全球优质AI工具而生 。目前已 聚集全球3000优质AI工具产品 ,旨在帮助用户发现全球最好的AI工具,同时为研发AI垂直应用的创业公司提供展示窗口,迎接未来的AI时代。未来…

Revit建模|Revit风管怎么绘制?

​绘制风管是机电工程重要的一环,对于不少刚接触Revit的小伙伴来说似乎还无从下手,今天就让小编来告诉大家在Revit中绘制风管的方法。 一、在Revit绘制风管 第一步:首先我们先在revit的界面中项目文件找到风管。 第二步:打开后我…

医疗IT系统安科瑞隔离电源装置在医院的应用

【摘要】介绍该三级综合医院采用安科瑞隔离电源系统5件套,使用落地式配电柜安装方式,从而实现将TN系统转化为IT系统,以及系统绝缘情况监测。 【关键词】医用隔离电源系统;IT系统;绝缘情况监测;三级综合医院…

tektronix泰克TDS3054数字荧光示波器

tektronix TDS3054是泰克TDS3000系列示波器,它是一种新的图形界面操作模式,称为QuickMenu。这种快速访问的用户界面使得主要的示波器控制访问一个单一的按键。每一个示波器都包含一个在示波器中运行的在线巡览盘。此磁盘提供了产品的操作和功能的概述。 …

Qt与Excel:从底层原理到上层应用的全面探索

Qt与Excel:从底层原理到上层应用的全面探索 一、Qt与Excel文件的交互基础(Basics of Qt and Excel Interaction)1.1 Qt与Excel文件的基本概念(Basic Concepts of Qt and Excel Files)1.2 Qt读取Excel文件的基本方法&am…

nignx虚拟主机头配置方法

目录 一、不同ip地址访问 二、不同端口访问 三、不同域名访问 一、不同ip地址访问 步骤一:配置虚拟主机头文件 cd /etc/nginx/conf.d/ 新建一个default2.conf touch default2.conf 配置default.cof 配置如下: Listen 192.168.59.137:80; access_log …

自动清理 ES 历史数据

一、 背景 随着业务的增长和时间的变化,ES 数据库的存储空间越来越大,存储数据多数为系统监控日志,保存的数据不需要长期保留,多数情况只需要保留几个月ES数据即可,既可以减轻ES服务器的负载和资源使用率,还…

Mysql进阶之索引优化

Mysql进阶之索引优化 一. 索引介绍 1.1 什么是Mysql索引 MySQL官方对于索引的定义:索引是帮助MySQL高效获取数据的数据结构。MySQL在存储数据之外,数据库系统中还维护着满足特定查找算法的数据结构,这些数据结构以某种引用(指向)表中的数据…

考研C语言第四章

4.1 关系表达式与逻辑表达式 ps&#xff1a; 算术运算符&#xff1a;加减乘除等 关系运算符&#xff1a;比大小的 逻辑与逻辑或 非&#xff01;的运算级别&#xff08;应该&#xff09;最高 4.2 if-else #include <stdio.h> //上课这个写while的原因是方便一次一次…