MongoDB—SQL到MongoDB映射图表

news2024/11/24 11:40:31

一、术语和概念

下表显示了各种 SQL 术语和概念 以及相应的 MongoDB 术语和概念。

SQL Terms/Concepts

MongoDB Terms/Concepts

database

database

table

collection

row

document or BSON document

column

field

index

index

table joins

$lookup, embedded documents

primary key

Specify any unique column or column combination as primary key.

primary key

In MongoDB, the primary key is automatically set to the _id field.

aggregation (e.g. group by)

aggregation pipeline

See the SQL to Aggregation Mapping Chart.

SELECT INTO NEW_TABLE

$out

See the SQL to Aggregation Mapping Chart.

MERGE INTO TABLE

$merge (Available starting in MongoDB 4.2)

See the SQL to Aggregation Mapping Chart.

UNION ALL

$unionWith (Available starting in MongoDB 4.4)

transactions

transactions

二、可执行程序

下表显示了一些数据库可执行文件和相应的MongoDB可执行文件。本表并非详尽无遗。

 

三、示例

下表显示了各种SQL语句和相应的MongoDB语句。表中的示例假设以下条件:

  • SQL示例假设一个名为people的表。
  • MongoDB示例假设一个名为people的集合包含以下原型的文档: 
{
  _id: ObjectId("509a8fb2f3f4948bd2f983a0"),
  user_id: "abc123",
  age: 55,
  status: 'A'
}

 1、Create and Alter

下表显示了与表级操作相关的各种SQL语句以及相应的MongoDB语句。

SQL Schema Statements

MongoDB Schema Statements

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


在第一个insertOne()或insertMany()操作上隐式创建。如果未指定_id字段,则自动添加主键_id。

db.people.insertOne( {
user_id: "abc123",
age: 55,
status: "A"
} )

然而,您也可以显式创建集合:

db.createCollection("people")
 
    
ALTER TABLE people
ADD join_date DATETIME

​托收不描述或强制执行其文件的结构;即,在收集级别没有结构变化。
然而,在文档级别,updateMany()操作可以使用$set操作符将字段添加到现有文档中。

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

​托收不描述或强制执行其文件的结构;即,在收集级别没有结构变化。
然而,在文档级别,updateMany()操作可以使用$unset操作符从文档中删除字段。​

db.people.updateMany(
{ },
{ $unset: { "join_date": "" } }
)
CREATE INDEX idx_user_id_asc
ON people(user_id)
db.people.createIndex( { user_id: 1 } )
CREATE INDEX
idx_user_id_asc_age_desc
ON people(user_id, age DESC)
db.people.createIndex( { user_id: 1, age: -1 } )
DROP TABLE people
db.people.drop()

 2、Insert

下表显示了与将记录插入表中相关的各种SQL语句以及相应的MongoDB语句。

SQL INSERT Statements

MongoDB insertOne() Statements

INSERT INTO people(user_id,
age,
status)
VALUES ("bcd001",
45,
"A")
db.people.insertOne(
{ user_id: "bcd001", age: 45, status: "A" }
)

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

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

相关文章

ssm基于echarts的基金交易网站的设计与实现论文

摘 要 计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔阂给消除了,让整个世界都可以即时通话…

C语言中指针变量如何使用

一、指针变量的定义与声明 1.1 定义 指针变量是用来存储另一个变量的内存地址的变量。在C语言中,指针变量的类型是指向某个类型的指针。例如,int *p; 表示一个整型指针变量p。 1.2 声明 指针变量的声明分为两种形式,一种是直接声明&#…

什么是数据同步?为什么它很重要?

您的员工经常在不同的应用程序中查看同一组数据。 营销人员可能会在营销自动化平台中查看潜在客户,销售可能会在 CRM 中查看它们; HR 团队可能会在人力资源信息系统中跟踪员工信息,而 IT 可能会在项目管理系统中跟踪信息;财务团队…

EDI 项目推进流程

EDI 需求确认 交易伙伴发来EDI对接邀请,企业应该如何应对? 首先需要确认EDI需求,通常包括传输协议和报文标准以及传输的业务单据类型。可以向交易伙伴发送以下内容: (中文版) 与贵司建立EDI连接需要使用…

数据分析求职-面试技巧

之前咱们已经分享了岗位介绍、求职准备思路、简历如何准备,今天咱俩聊一聊面试的技巧~ 1. 面试流程 咱们先聊聊面试的基本流程:简历/笔试筛选->技术初面->技术二面->技术三面->技术交叉面->HR面。 这个过程中有几个点值得重点说说&…

通信基础——带宽

随着信息社会的发展和数字化进程的加速,通信技术已经成为现代社会最为重要的基础设施之一。而在通信技术中,带宽作为一个重要的概念,对于我们理解和应用现代通信技术具有至关重要的意义。本文将以“通信基础——带宽”为主题,对带…

如何正确使用docker搭建靶场--pikachu

在Linux中搭建靶场——pikachu 1.开启docker systemctl start docker 2.查看docker状态 systemctl status docker 3.查看docker存在那些镜像 docker images 4.拉取镜像,这里是以pikachu为例因此需要一个php5的版本 (1)打开代理&#xff…

Linux Perf 介绍

文章目录 前言 二、安装Perf三、二级命令3.1 perf list3.2 perf record/report3.3 perf stat3.4 perf top 四、使用火焰图进行性能分析4.1 下载火焰图可视化生成器4.2 使用perf采集数据4.3 生成火焰图参考资料 前言 perf是一款Linux性能分析工具,内置在Linux内核的…

用C语言采集游戏平台数据并做行业分析

游戏一直深受90/00后的喜爱,有些人因为对游戏的热爱还专门成立了工作室做游戏赚钱,但是游戏行业赚钱走不好就会被割一波韭菜,那么现在什么游戏挣钱,什么游戏好玩认可度高?带着这样的问题我将利用我毕生所学&#xff0c…

爬取豆瓣电影top250的电影名称(完整代码与解释)

在爬取豆瓣电影top250的电影名称之前,需要在安装两个第三方库requests和bs4,方法是在终端输入: pip install requestspip install bs4 截几张关键性图片: 豆瓣top250电影网页 运行结果 测试html文件标签的各个方法的作用&#xf…

【Midjourney】AI绘画新手教程(一)登录和创建服务器,生成第一幅画作

一、登录Discord 1、访问Discord官网 使用柯學尚网(亲测非必须,可加快响应速度)访问Discord官方网址:https://discord.com 选择“在您的浏览器中打开Discord” 然后,注册帐号、购买套餐等,在此不做缀述。…

OpenCV-Python(23):傅里叶变换

原理 傅里叶变换是一种数学变换,用于将一个函数(在图像处理中通常是图像)从时域(空域)转换到频域。它将函数表示为一系列正弦和余弦函数的和,用于分析信号的频率和相位信息。 傅里叶变换的原理是将一个连续…

四则运算 C语言xdoj20

问题描述: 输入两个整数和一个四则运算符,根据运算符计算并输出其运算结果(和、差、积、商、余之一)。注意做整除及求余运算时,除数不能为零。 输入说明: 使用scanf()函数输入两个整数和一个运算符&#xf…

界面控件DevExpress Blazor Grid v23.2 - 支持全新的单元格编辑模式

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生Blazor UI组件(包括Pivot Grid、调度程序、图表、数据编辑器和报表等)。 在这篇文章中,我们将介…

扎心!圣诞礼物含“毒”量极高,当心惊喜变惊吓!

圣诞快乐? 近日,亚信安全截获多起以“圣诞礼物”为钓鱼邮件的间谍木马病毒,名为RedLine。 RedLine通常是通过钓鱼邮件或挂马网站进行传播。钓鱼邮件更多的是利用社会工程学,“蹭热点”、节日祝福和节日福利是攻击者经常使用的社工…

【Echarts实践案例】如何在线图上标记一个非轴线上的点

需求背景: 当前有一个趋势图,横坐标表示灯泡平均使用时长,纵坐标表示灯泡平均使用温度。现在需要在当前坐标系下标记一个正在使用中的灯泡的时长及温度(趋势图表示的是计算出的平均温度,所以当前灯泡的温度可能不会在…

python pillow(PIL)库使用介绍

Python 图像库向 Python 解释器添加了图像处理功能。 该库提供了广泛的文件格式支持、高效的内部表示和相当强大的图像处理功能。 核心图像库旨在快速访问以几种基本像素格式存储的数据。它应该为通用图像处理工具提供坚实的基础。 概述 Python 图像库将图像处理功能添加到…

git(安装,常用命令,分支操作,gitee,IDEA集成git,IDEA集成gitee,IDEA集成github,远程仓库操作)

文章目录 1. Git概述1.1 何为版本控制1.2 为什么需要版本控制1.3 版本控制工具1.4 Git简史1.5 Git工作机制1.6 Git和代码托管中心 2. Git安装3. Git常用命令3.1 设置用户签名3.1.1 说明3.1.2 语法3.1.3 案例实操 3.2 初始化本地库3.2.1 基本语法3.2.2 案例实操3.2.3 结果查看 3…

Maple 各版本安装指南

Maple 下载链接 https://pan.baidu.com/s/11hKo1XxZGa0xv3Ivj6fbEA?pwd0531 1.鼠标右击【Maple 2023】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Maple 2023】。 2.打开解压后的文件夹,鼠标右击【Setup】选择【以管理员身…