MongoDB学习第七篇 --- sql和mongodb对比
一、术语和概念的对比
| SQL | MongoDB |
|---|---|
| database | database |
| 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. |
In MongoDB, the primary key is automatically set to the _id field. |
| aggregation (e.g. group by) |
aggregation pipeline |
二、对库和表的操作语句对比
| SQL | MongoDB |
|---|---|
CREATE TABLE people ( |
db.people.insertOne( {
也可以用一下语句创建collection db.createCollection("people")
|
ALTER TABLE people |
db.people.updateMany( |
ALTER TABLE people |
db.people.updateMany( |
CREATE INDEX idx_user_id_asc |
db.people.createIndex( { user_id: 1 } )
|
CREATE INDEX |
db.people.createIndex( { user_id: 1, age: -1 } )
|
DROP TABLE people |
db.people.drop() |
三、insert语句的对比
| SQL INSERT Statements | MongoDB insertOne() Statements |
|---|---|
INSERT INTO people(user_id, |
db.people.insertOne( |
四、select语句的对比
| SQL SELECT Statements | MongoDB find() Statements |
|---|---|
SELECT * |
db.people.find() |
SELECT id, |
db.people.find( |
SELECT user_id, status |
db.people.find( |
SELECT * |
db.people.find( |
SELECT user_id, status |
db.people.find( |
SELECT * |
db.people.find( |
SELECT * |
db.people.find( |
SELECT * |
db.people.find( |
SELECT * |
db.people.find( |
SELECT * |
db.people.find( |
SELECT * |
db.people.find( |
SELECT * |
db.people.find( { user_id: /bc/ } )
-or- db.people.find( { user_id: { $regex: /bc/ } } )
|
SELECT * |
db.people.find( { user_id: /^bc/ } )
-or- db.people.find( { user_id: { $regex: /^bc/ } } )
|
SELECT * |
db.people.find( { status: "A" } ).sort( { user_id: 1 } )
|
SELECT * |
db.people.find( { status: "A" } ).sort( { user_id: -1 } )
|
SELECT COUNT(*) |
db.people.count() or db.people.find().count() |
SELECT COUNT(user_id) |
db.people.count( { user_id: { $exists: true } } )
or db.people.find( { user_id: { $exists: true } } ).count()
|
SELECT COUNT(*) |
db.people.count( { age: { $gt: 30 } } )
or db.people.find( { age: { $gt: 30 } } ).count()
|
SELECT DISTINCT(status) |
db.people.distinct( "status" ) |
SELECT * |
db.people.findOne() or db.people.find().limit(1) |
SELECT * |
db.people.find().limit(5).skip(10) |
EXPLAIN SELECT * |
db.people.find( { status: "A" } ).explain()
|
五、update语句的对比
| SQL Update Statements | MongoDB updateMany() Statements |
|---|---|
UPDATE people |
db.people.updateMany( |
UPDATE people |
db.people.updateMany( |
六、delete语句的对比
| SQL Delete Statements | MongoDB deleteMany() Statements |
|---|---|
DELETE FROM people |
db.people.deleteMany( { status: "D" } )
|
DELETE FROM people |
db.people.deleteMany({})
|
MongoDB学习第七篇 --- sql和mongodb对比的更多相关文章
- MongoDB学习笔记(1):MongoDB的安装和说明
MongoDB学习笔记(1):MongoDB的安装和说明 快速开始 下载地址 官网下载: https://www.mongodb.com/download-center?jmp=nav#communi ...
- MongoDB学习笔记七:管理
[启动和停止MongoDB]『从命令行启动』执行mongod,启动MongoDB服务器.mongod有很多可配置的启动选项:在命令行运行mongod --help可以查看所有选项.一些主要选项如下: ...
- 第七篇 SQL Server安全跨数据库所有权链接
本篇文章是SQL Server安全系列的第七篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...
- 【译】第七篇 SQL Server安全跨数据库所有权链接
本篇文章是SQL Server安全系列的第七篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...
- 第七篇 SQL Server代理作业活动监视器
本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...
- 【译】第七篇 SQL Server代理作业活动监视器
本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...
- MongoDB学习【四】—pymongo操作mongodb数据库
一.pymongodb的安装 Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接. pip安装 pip 是一个通用的 Python 包管理工具, ...
- MongoDB学习比较-07 C#驱动操作MongoDB
下载驱动 驱动的下载有两种方式:一种是在C#项目中通过NuGet进行安装,另一种是通过下面的链接:https://github.com/mongodb/mongo-csharp-driver/rele ...
- 数据库系统学习(七)-SQL语言之复杂查询与视图
第七讲 SQL语言之复杂查询与视图 基本内容 子查询 IN与NOT IN谓词子查询 判断某一表达式的值是否在子查询的结构中 非相关子查询 相关子查询 theta some /theta all谓词子查 ...
随机推荐
- 基于 HTML5 WebGL 的 3D 仓储管理系统
仓储管理系统(WMS)是一个实时的计算机软件系统,它能够按照运作的业务规则和运算法则,对信息.资源.行为.存货和分销运作进行更完美地管理,使其最大化满足有效产出和精确性的要求.从财务软件.进销存软件C ...
- [ 面试没回答上的问题2]IOS上给body绑定click事件的bug
面试被问到ios上的bug,自己提到绑定click事件的bug,但是并没有把问题讲的很清楚,这里再清理一下思路. 这个bug只在IOS上有,包括ihone,ipad,由于ios浏览器都用的safari ...
- Java(概略篇)
准备 下载并安装Java jdk 和 编辑器(eclipse或Netbeans) 配置环境变量 第一个程序 public class test{ public static void main(Str ...
- 在cmd中运行android.bat报出空指针异常
因启动SDK manager和启动AVD manager 都发生闪退现象,网上很多方法都无法解决 又在cmd 中执行运行 D:\Program Files\Android_SDK\sdk\tools& ...
- HDU3790-最短路径问题
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- C#的数据类型总结(1)
C# 是一种强类型语言.在变量中存储值之前,必须指定变量的类型,如以下示例所示: int a = 1; string s = "Hello"; XmlDocument tempDo ...
- 利用纯CSS美化checkbox和radio和滑动按钮的实现
W3C提供的CheckBox和radio的原始样式非常的丑,而且在不同的额浏览器表现还不一样,使用常规的方法添加样式没法进行修改样式 一, 单选按钮 <html> <head> ...
- Hibernate框架进阶(中篇)之多表关系
导读 Hibernate进阶主要分为上中下三篇,本文是中篇,主要讲解Hibernate框架中多表关系的实现.我们知道多表关系有一对一.一对多(多对一)和多对多三种关系.而1对1关系一般合并为一个表处理 ...
- hdu 5288||2015多校联合第一场1001题
pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...
- SpringMVC上传图片并压缩及剪切demo
/** * */ package com.up.controller; import java.awt.Image; import java.awt.image.BufferedImage; impo ...