当前位置: 首页 > news >正文

SQL和MongoDB对比

关系型数据库如MySQL和非关系型数据库MongoDB的对应关系:

SQL

MongoDB

database

database

table

collection

row

document or Bson document

column

field

index

index

table joins

$lookup

primary key

primary key

指定任何唯一的列或列组合作为主键

主键会自动设置为_id字段

aggregation (group by)

aggregation pipeline

select into table

$out

merge into table

$merge

union all

$unionWith

transactions

transacctions

Example

CREATE TABLE people (id MEDIUMINT NOT NULLAUTO_INCREMENT,user_id Varchar(30),age Number,status char(1),PRIMARY KEY (id)
)

Implicitly created on first insertOne() or insertMany() operation. The primary key _id is automatically added if _id field is not specified.

db.people.insertOne( {user_id: "abc123",age: 55,status: "A"} )
ALTER TABLE people
DROP COLUMN join_date

使用$set添加field

db.people.updateMany({ },{ $set: { join_date: new Date() } }
)
ALTER TABLE people
DROP COLUMN join_date

使用$unset删除field

db.people.updateMany({ },{ $unset: { "join_date": "" } }
)

创建索引

CREATE INDEX idx_user_id_asc
ON people(user_id)
db.people.createIndex( { user_id: 1 } )
CREATE INDEXidx_user_id_asc_age_desc
ON people(user_id, age DESC)

-1表示降序

db.people.createIndex( { user_id: 1, age: -1 } )
DROP TABLE people
db.people.drop()
INSERT INTO people(user_id,age,status)
VALUES ("bcd001",45,"A")
db.people.insertOne({ user_id: "bcd001", age: 45, status: "A" }
)
SELECT * FROM people
db.people.find()
SELECT id,user_id,status FROM people
db.people.find({},{user_id:1,status:1})
SELECT user_id,status FROM people
//0表示不显示改行
db.people.find({},{user_id:1,status:1,_id:0})
SELECT * FROM people WHERE status="A"
db.people.find({status:"A"})
SELECT user_id,status FROM people WHERE status = "A"
db.people.find({status:"A"},{user_id:1,status:1,_id:0})
SELECT * FROM people WHERE status != "A"
db.people.find({status:{$ne:"A"}})
SELECT * FROM people WHERE status = "A" AND age=50
db.people.find({status:"A",age:50})
SELECT * FROM people OR age = 50
db.people.find({$or:[{status:"A"},{age:50}]})
SELECT * FROM people WHERE age >= 25
db.people.find({age:{$gte:25}})
SELECT * FROM people WHERE age > 25 AND age <= 50
db.people.find({age:{$gt:25,$lte:50}})
SELECT * FROM people WHERE user_id like "%bc%"
db.people.find({user_id:/bc/} )
db.people.find({user_id:{$regex:/bc/}})
SELECT * FROM people WHERE user_id LIKE "%bc"
db.people.find({user_id:/^bc/})
db.people.find({user_id:{$regex:/^bc/}})
SELECT * FROM people WHERE status = "A" ORDER BY user_id ASC
SELECT * FROM people WHERE status = "A" ORDER BY user_id DESC
db.people.find({status:"A"}).sort({user_id:1})
db.people.find({status:"A"}).sort({user_id:-1})
SELECT count(*) FROM people
db.people.count() or 
db.people.find().count() or 
db.people.count({user_id:{$exists:true}})
SELECT count(*) FROM people WHERE age>30
db.people.count({age:{$gt:30}})
SELECT DISTINCT(status) FROM people
db.people.distinct("status")
SELECT * FROM people LIMIT 1
db.people.findOne() or
db.people.find().limit(1)
SELECT * FROM people LIMIT 5 SKIP 10
db.people.find(().limit(5).skip(10)
EXPLAIN SELECT * FROM people WHERE status = "A"
db.people.find({status:"A"}).explain()

相关文章:

SQL和MongoDB对比

关系型数据库如MySQL和非关系型数据库MongoDB的对应关系&#xff1a;SQLMongoDBdatabasedatabasetablecollectionrowdocument or Bson documentcolumnfieldindexindextable joins$lookupprimary keyprimary key指定任何唯一的列或列组合作为主键主键会自动设置为_id字段aggrega…...

研究链表空间销毁问题

&#x1f4af;&#x1f4af;&#x1f4af; 1.研究链表空间销毁问题 当链表使用完后&#xff0c;需要将链表销毁&#xff0c;那么该如何销毁呢&#xff1f; void SLTDestroy(SLTNode* phead)//销毁单链表 {SLTNode* cur phead;while(cur){free(cur);cur cur->next;} }你…...

Linux面试总结

一.常用命令1.目录切换cd / 切换到根目录cd ../ 切换到上级目录cd ~ 切换到home目录2.查看目录ls 列出当前目录下所有的文件ls [路径]ls / 查看根目录 ls -l 相当于 ll 最常用的命令,用了表的方式列出当前目录的内容3.查看当前目录pwd-4.创建一组空文件touch5.显示文件内容cat6…...

anaconda的linux版本以及jupyter的安装和DataSpell连接linux的jupyter服务器

anaconda安装&#xff1a;官网&#xff1a;https://www.anaconda.com/拷贝下载网址后&#xff0c;在Linux里进行下载&#xff1a;wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh执行sh&#xff1a;./Anaconda3-2022.10-Linux-x86_64.sh 安装完后&a…...

Zookeeper集群和Hadoop集群安装(保姆级教程)

1. HA HA&#xff08;Heigh Available&#xff09;高可用 解决单点故障&#xff0c;保证企业服务 7*24 小时不宕机单点故障&#xff1a;某个节点宕机导致整个集群的宕机 Hadoop 的 HA NameNode 存在单点故障的可能&#xff0c;需要配置 HA 解决引入第二个 NameNode 作为备份同…...

利用matlab的newff构建BP神经网络来实现数据的逼近和拟合

假设P是原始数据向量&#xff1b; T是对应的目标向量&#xff1b; 现在需要通过神经网络来实现P->T的非线性映射。 net newff(minmax(P),[16,1],{tansig,purelin},trainlm); net.trainParam.epochs 2000; net.trainParam.goal 1e-5; net init(net); net train(n…...

【经验分享】电路板上电就挂?新手工程师该怎么检查PCB?

小伙伴们有没有经历过辛辛苦苦&#xff0c;加班加点设计的PCB&#xff0c;终于搞定下单制板。接下来焦急并且忐忑地等待PCB板到货&#xff0c;焊接&#xff0c;验证&#xff0c;一上电&#xff0c;结果直接挂了... 连忙赶紧排查&#xff0c;找问题。最终发现&#xff0c;是打过…...

运筹系列68:TSP问题Held-Karp下界的julia实现

1. 介绍 Held-Karp下界基于1tree下界&#xff0c;但是增加了点权重&#xff0c;如下图 通过梯度下降的方法找到最优的π\piπ。 这里用到的1tree有下面几种&#xff1a; 全部点用来生成最小生成树&#xff0c;再加上所有叶子结点第二短的边中数值最大的那个任意选一个点&…...

神经影像信号处理总成(EEG、SEEG、MRI、CT)

目录一. EEG(脑电图)1.1 脑波1.2 伪迹1.2.1 眼动伪迹1.2.2 肌电伪迹1.2.3 运动伪迹1.2.4 心电伪迹1.2.5 血管波伪迹1.2.6 50Hz和静电干扰1.3 伪迹去除方法1.3.1 避免伪迹产生法1.3.2 直接移除法1.3.3 伪迹消除法二. SEEG(立体脑电图)三. CT&#xff08;计算机断层扫描&#xff…...

ZooKeeper 进阶:基本介绍

zppkeeper是什么 zookeeper是一个高性能、开源的分布式应用协调服务&#xff0c;它提供了简单原始的功能&#xff0c;分布式应用可以基于它实现更高级的服务&#xff0c;比如实现同步(分布式锁)、配置管理、集群管理。它被设计为易于编程&#xff0c;使用文件系统目录树作为数…...

CSS的常用元素属性,显示模式,盒模型,弹性布局

目录 1.常用元素属性 1.1字体属性 设置字体 设置大小 字体粗细 文字样式 1.2文本属性 文字颜色 文字对齐 ​编辑文本装饰 文本缩进 ​编辑行高 ​编辑1.3背景属性 背景颜色 背景位置 背景尺寸 1.4圆角矩形 2.元素的显示模式 2.1块级元素(display:block) 2.…...

【20230308】串口接收数据分包问题处理(Linux)

1 问题背景 一包数据可能由于某些传输原因&#xff0c;经常出现一包数据分成几包的情况。 2 解决方法 2.1 通过设定最小读取字符和读取超时时间 可以使用termios结构体来控制终端设备的输入输出。可以通过VTIME和VMIN的值结合起来共同控制对输入的读取。此外&#xff0c;两…...

数据库复试问题总结

数据库复试问题 由《数据库系统概论(第5版)》总结而来&#xff0c;用于本人研究生复试准备。也欢迎各位准研究生们学习使用。 文章目录数据库复试问题1、三级模式结构及二级映射有什么优点&#xff1f;2、关系模型中的完整性约束是哪几类&#xff1f;3、SQL的特点&#xff1f;…...

Linux操作系统安装——服务控制

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…...

【C语言】编译+链接

一、程序的翻译环境和执行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0c;它用于实际执行代码。详解编译链接翻译环境1.组成一个程序的每个源文件通过…...

为「IT女神勋章」而战

大家好&#xff0c;我是空空star&#xff0c;今天为「IT女神勋章」而战 文章目录前言一、IT女神勋章二、绘制爱心1.htmlcssjs来源&#xff1a;一行代码代码效果2.python来源&#xff1a;C知道代码效果3.go来源&#xff1a;复制代码片代码效果4.java来源&#xff1a;download代码…...

JS 动画 之 setInterval、requestAnimationFram

帧率&#xff1a;一秒中内页面刷新的次数&#xff0c;一般为60FPS&#xff0c;每一帧的时间是1000/6016.67ms setInterval 当我们使用setInterval做动画时&#xff0c;有两点会影响动画效果 由于setInterval是异步任务&#xff08;宏任务&#xff09;&#xff0c;会放到异步队…...

【LeetCode——排序链表】

文章目录排序链表二、解题思路&#xff1a;二.实现的代码总结&#xff1a;排序链表 一道链表排序题&#xff0c;链接在这里 二、解题思路&#xff1a; 解题思路&#xff1a;使用归并排序&#xff08;用递归实现&#xff09; 第一步&#xff1a;先找到链表的中间节点 第二步…...

二叉树的遍历(前序、中序、后序)| C语言

目录 0.写在前面 1.前序遍历 步骤详解 代码实现 2.中序遍历 步骤详解 代码实现 3.后序遍历 步骤详解 代码实现 0.写在前面 认识二叉树结构最简单的方式就是遍历二叉树。所谓遍历二叉树就是按照某种特定的规则&#xff0c;对二叉树的每一个节点进行访问&#xff0c;…...

【建议收藏】深入浅出Yolo目标检测算法(含Python实现源码)

深入浅出Yolo目标检测算法&#xff08;含Python实现源码&#xff09; 文章目录深入浅出Yolo目标检测算法&#xff08;含Python实现源码&#xff09;1. One-stage & Two-stage2. Yolo详解2.1 Yolo命名2.2 端到端输入输出2.3 Yolo中的标定框2.4 Yolo网络结构2.5 Yolo的算法流…...

**雾计算中的边缘智能:基于Python的轻量级任务调度系统设计与实现**在物联网(IoT)飞速发展的今天,传统云

雾计算中的边缘智能&#xff1a;基于Python的轻量级任务调度系统设计与实现 在物联网&#xff08;IoT&#xff09;飞速发展的今天&#xff0c;传统云计算模式已难以满足低延迟、高带宽和实时响应的需求。**雾计算&#xff08;Fog Computing&#xff09;**作为云与终端设备之间的…...

iOS设备支持文件管理指南:让Xcode兼容新旧iOS系统的实用方案

iOS设备支持文件管理指南&#xff1a;让Xcode兼容新旧iOS系统的实用方案 【免费下载链接】iOSDeviceSupport All versions of iOS Device Support 项目地址: https://gitcode.com/gh_mirrors/ios/iOSDeviceSupport 开发困境突破&#xff1a;iOS版本与Xcode的兼容性挑战 …...

探索DeepCAD:基于深度学习的CAD模型生成技术入门

探索DeepCAD&#xff1a;基于深度学习的CAD模型生成技术入门 【免费下载链接】DeepCAD code for our ICCV 2021 paper "DeepCAD: A Deep Generative Network for Computer-Aided Design Models" 项目地址: https://gitcode.com/gh_mirrors/de/DeepCAD 副标题&…...

终极指南:如何使用Python实现同花顺自动化程序交易

终极指南&#xff1a;如何使用Python实现同花顺自动化程序交易 【免费下载链接】jqktrader 同花顺自动程序化交易 项目地址: https://gitcode.com/gh_mirrors/jq/jqktrader 在量化投资领域&#xff0c;自动化交易已成为专业投资者的标准配置。本文将详细介绍如何利用jqk…...

Spring Boot项目实战:用ShardingSphere-JDBC 5.3.2搞定PostgreSQL分库分表,附完整配置流程

Spring Boot与ShardingSphere-JDBC深度整合&#xff1a;PostgreSQL分库分表实战指南 当你的应用用户量突破百万级&#xff0c;单表数据量超过千万行时&#xff0c;是否经常遇到查询响应变慢、写入性能下降的问题&#xff1f;作为经历过多次系统扩容的老兵&#xff0c;我想分享一…...

Qwerty Learner版本发布流程:从开发到上线的标准化

Qwerty Learner版本发布流程&#xff1a;从开发到上线的标准化 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://gitcod…...

LangChain、LangFlow、LangGraph:一文讲清三大 LLM 框架的定位与差异

01 | LangChain&#xff1a;LLM 应用的“基础设施层”① LangChain 是什么&#xff1f;LangChain 是一个用于构建 LLM 应用的通用框架&#xff0c;核心目标只有一句话&#xff1a;把「大模型 外部工具 数据源 Prompt」系统化地组织起来。它并不是一个“产品”&#xff0c;而…...

【C++:哈希表】从哈希冲突到负载因子:深入探索开放定址与链地址法的核心机密

&#x1f525;小叶-duck&#xff1a;个人主页 ❄️个人专栏&#xff1a;《Data-Structure-Learning》《C入门到进阶&自我学习过程记录》 《算法题讲解指南》--优选算法 《算法题讲解指南》--递归、搜索与回溯算法 《算法题讲解指南》--动态规划算法 ✨未择之路&#xff0…...

从LIF神经元到STDP学习:一个SNN识别MNIST的完整故事线(不只是代码)

从LIF神经元到STDP学习&#xff1a;揭秘脉冲神经网络如何"看见"数字 想象一下&#xff0c;当你看到数字"7"时&#xff0c;大脑中的神经元是如何协同工作&#xff0c;让你瞬间识别出这个符号的&#xff1f;这正是脉冲神经网络(SNN)试图模拟的生物智能过程。…...

Boomer:轻量高效的Linux屏幕放大镜工具

Boomer&#xff1a;轻量高效的Linux屏幕放大镜工具 【免费下载链接】boomer Zoomer application for Linux 项目地址: https://gitcode.com/gh_mirrors/boo/boomer 当你需要精准查看屏幕细节时是否常感到操作繁琐&#xff1f;无论是设计工作中的像素级调整、编程时的代码…...