成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從SQL到MongoDB,這一篇就夠了

數據庫 SQL Server MongoDB
對于 SQL 轉戰 NoSQL的開發人員來說,最難的一步其實是將原有的 SQL 的概念和知識直接復用過來,最大化的減小學習的成本。

前言

很多開發者首次接觸數據庫(通常是在高校課堂)的概念,或者說接觸第一個數據庫,通常是 SQL 數據庫,而現在,NoSQL 數據庫后來居上,很多原 SQL 數據的使用者難免有轉向 NoSQL 的需求。而作為 NoSQL 數據庫的代表,MongoDB 在社區越來越流行,生產環境的使用也日益廣泛。

對于 SQL 轉戰 NoSQL的開發人員來說,最難的一步其實是將原有的 SQL 的概念和知識直接復用過來,最大化的減小學習的成本。

其實,這一步 MongoDB 官方已經為大家考慮到了,那就是在:MongoDB CRUD Operations > MongoDB CRUD Operations > SQL to MongoDB Mapping Chart,這篇文檔非常好的總結了 SQL 對應 MongoDB 的術語和概念,還有可執行文件、SQL 語句/MongoDB 語句等,

可以說對于 SQL 數據庫開發人員,如果理解了他們之間的對應關系,那么就一只腳就邁進了 MongoDB 的大門。

Terminology and Concepts

下表介紹了各種 SQL 術語和概念以及相應的 MongoDB 術語和概念.

 

從 SQL 到 MongoDB,這一篇就夠了

TIP

在許多情況下, 非規范化數據模型(嵌入式文檔和數組) denormalized data model (embedded documents and arrays) 將繼續是您數據和用例的最佳選擇,而不是多文檔事務. 也就是說,對于許多場景,對數據進行適當的建模將最大限度地減少對 多文檔事務(multi-document transactions)的需求。

Executables

下表顯示了一些數據庫可執行文件和相應的 MongoDB 可執行文件。 這張表并不是詳盡無遺的。

 

從 SQL 到 MongoDB,這一篇就夠了

Examples

下表顯示了各種 SQL 語句和相應的 MongoDB 語句。 表中的例子假定以下條件:

  • Sql 示例假設一個名為 people 的表。
  • MongoDB 的示例假定一個名為 people 的集合包含以下原型的文檔:
  1.   _id: ObjectId("509a8fb2f3f4948bd2f983a0"), 
  2.   user_id: "abc123"
  3.   age: 55, 
  4.   status: 'A' 

Create and Alter

CREATE TABLE

SQL 模式語句:

  1. CREATE TABLE people ( 
  2.     id MEDIUMINT NOT NULL 
  3.         AUTO_INCREMENT, 
  4.     user_id Varchar(30), 
  5.     age Number, 
  6.     status char(1), 
  7.     PRIMARY KEY (id) 

MongoDB 模式語句:

  1. db.people.insertOne( { 
  2.     user_id: "abc123"
  3.     age: 55, 
  4.     status: "A" 
  5.  } ) 

在第一個 insertOne() 或 insertMany() 操作上隱式創建。 如果沒有指定 _id 字段,則自動添加主鍵 _id。

但是,您也可以顯式地創建一個集合:

  1. db.createCollection("people"

ALTER TABLE / ADD

SQL模式語句:

  1. ALTER TABLE people 
  2. ADD join_date DATETIME 

MongoDB 模式語句:

  1. db.people.updateMany( 
  2.     { }, 
  3.     { $set: { join_date: new Date() } } 

集合不描述或強制執行其文檔的結構;也就是說,在集合級別上沒有結構上的改變。

但是,在文檔級別,updateMany() 操作可以使用 $set 操作符向現有文檔添加字段。

ALTER TABLE / DROP COLUMN

SQL模式語句:

  1. ALTER TABLE people 
  2. DROP COLUMN join_date 

MongoDB 模式語句:

  1. db.people.updateMany( 
  2.     { }, 
  3.     { $unset: { "join_date""" } } 

集合不描述或強制執行其文檔的結構;也就是說,在集合級別上沒有結構上的改變。

但是,在文檔級別,updateMany() 操作可以使用 $unset 操作符從文檔中刪除字段。

CREATE INDEX

SQL 模式語句:

  1. CREATE INDEX idx_user_id_asc 
  2. ON people(user_id) 

MongoDB 模式語句:

  1. db.people.createIndex( { user_id: 1 } ) 

CREATE INDEX / Multi

SQL模式語句:

  1. CREATE INDEX idx_user_id_asc_age_descON people(user_id, age DESC

MongoDB 模式語句:

  1. db.people.createIndex( { user_id: 1, age: -1 } ) 

DROP TABLE

SQL模式語句:

  1. DROP TABLE people 

MongoDB 模式語句:

  1. db.people.drop() 

Insert

下表顯示了與向表中插入記錄相關的各種 SQL 語句以及相應的 MongoDB 語句。

SQL INSERT 語句

  1. INSERT INTO people(user_id, 
  2.                   age, 
  3.                   status) 
  4. VALUES ("bcd001"
  5.         45, 
  6.         "A"

Mongodb insertOne() 語句

  1. db.people.insertOne( 
  2.    { user_id: "bcd001", age: 45, status: "A" } 

Select

下表顯示了與從表中讀取記錄相關的各種 SQL 語句以及相應的 MongoDB 語句。

NOTE:

  • find() 方法總是包含返回文檔中的 _id 字段,除非通過 projection 特別排除。 下面的一些 SQL 查詢可能包含一個 _id 字段來反映這一點,即使該字段沒有包含在相應的 find() 查詢中。

SELECT ... WHERE

SQL 語句

  1. SELECT user_id, status 
  2. FROM people 
  3. WHERE status = "A" 

Mongodb 語句

  1. db.people.find( 
  2.     { status: "A" }, 
  3.     { user_id: 1, status: 1, _id: 0 } 

SELECT ... AND

SQL 語句

  1. SELECT * 
  2. FROM people 
  3. WHERE age > 25 
  4. AND   age <= 50 

Mongodb 語句

  1. db.people.find( 
  2.    { age: { $gt: 25, $lte: 50 } } 

SELECT ... OR

SQL 語句

  1. SELECT * 
  2. FROM people 
  3. WHERE status = "A" 
  4. OR age = 50 

Mongodb 語句

  1. db.people.find( 
  2.     { $or: [ { status: "A" } , { age: 50 } ] } 

SELECT ... LIKE

SQL 語句

  1. FROM people 
  2. WHERE user_id like "%bc%" 

Mongodb 語句

  1. db.people.find( { user_id: /bc/ } )  
  2. -or 
  3. db.people.find( { user_id: { $regex: /bc/ } } ) 

SELECT ... OEDER BY

SQL 語句

  1. SELECT * 
  2. FROM people 
  3. WHERE status = "A" 
  4. ORDER BY user_id ASC 

Mongodb 語句

  1. db.people.find( { status: "A" } ).sort( { user_id: 1 } ) 

SELECT ... COUNT

SQL 語句

  1. SELECT COUNT(user_id) 
  2. FROM people 

Mongodb 語句

  1. db.people.count( { user_id: { $exists: true } } )  
  2. or  
  3. db.people.find( { user_id: { $exists: true } } ).count() 

SELECT DISTINCT

SQL 語句

  1. SELECT DISTINCT(status) 
  2. FROM people 

Mongodb 語句

  1. db.people.aggregate( [ { $group : { _id : "$status" } } ] ) 
  2.  
  3. 或者,對于不同的不超過 [BSON 大小限制](https://docs.mongodb.com/manual/reference/limits/#limit-bson-document-size) 的值集 
  4.  
  5. db.people.distinct"status" ) 

SELECT ... LIMIT SKIP

SQL 語句

  1. SELECT * 
  2. FROM people 
  3. LIMIT 5 
  4. SKIP 10 

Mongodb 語句

  1. db.people.find().limit(5).skip(10) 

EXPLAIN SELECT

SQL 語句

  1. EXPLAIN SELECT * 
  2. FROM people 
  3. WHERE status = "A" 

Mongodb 語句

  1. db.people.find( { status: "A" } ).explain() 

Update Records

下面顯示了與更新表中現有記錄相關的各種 SQL 語句以及相應的 MongoDB 語句。

UPDATE ... SET

SQL 語句

  1. UPDATE people 
  2. SET status = "C" 
  3. WHERE age > 25 

Mongodb 語句

  1. db.people.updateMany( 
  2.    { age: { $gt: 25 } }, 
  3.    { $set: { status: "C" } } 

UPDATE ... INC

SQL 語句

  1. UPDATE people 
  2. SET age = age + 3 
  3. WHERE status = "A" 

Mongodb 語句

  1. db.people.updateMany( 
  2.    { status: "A" } , 
  3.    { $inc: { age: 3 } } 

Delete Records

下面顯示了與從表中刪除記錄相關的各種 SQL 語句以及相應的 MongoDB 語句。

DELETE WHERE

SQL 語句

  1. DELETE FROM peopleWHERE status = "D" 

Mongodb 語句

  1. db.people.deleteMany( { status: "D" } ) 

DELETE

SQL 語句

  1. DELETE FROM people 

Mongodb 語句

  1. db.people.deleteMany({}) 

看到這里,想必大家應該已經將腦海中 SQL 相關的知識和 MongoDB 一一對應起來了,那么剩下的就需要大家多多的實踐,深入挖掘。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2021-11-24 22:42:15

WorkManagerAPI

2018-05-22 08:24:50

PythonPyMongoMongoDB

2020-08-03 10:00:11

前端登錄服務器

2023-04-24 08:00:00

ES集群容器

2020-02-18 16:20:03

Redis ANSI C語言日志型

2022-06-20 09:01:23

Git插件項目

2023-02-10 09:04:27

2020-05-14 16:35:21

Kubernetes網絡策略DNS

2019-08-13 15:36:57

限流算法令牌桶

2022-08-01 11:33:09

用戶分析標簽策略

2021-04-08 07:37:39

隊列數據結構算法

2023-09-11 08:13:03

分布式跟蹤工具

2021-04-14 15:54:20

Kubernetes程序工具

2023-02-16 13:42:00

MongoDB數據庫

2020-07-03 08:21:57

Java集合框架

2021-05-14 23:31:50

大數據計算機開發

2024-04-08 10:01:33

2024-09-23 08:00:00

消息隊列MQ分布式系統

2019-05-14 09:31:16

架構整潔軟件編程范式

2023-10-17 08:15:28

API前后端分離
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区二区三区免 | 久草在线青青草 | 中文字幕免费在线 | 中文av在线播放 | 成人亚洲 | 中文字字幕在线中文乱码范文 | 日韩av在线中文字幕 | 亚洲网在线| 国产一区二区三区四区 | 久久久久亚洲av毛片大全 | 伊人狠狠| 神马久久久久久久久久 | 午夜专区 | 国产精品成人一区二区 | 视频一区在线 | 91网在线观看 | 久久久av一区 | 久久综合一区 | 久久免费大片 | 免费在线观看一区二区三区 | 亚洲欧美中文字幕在线观看 | 日本特黄特色aaa大片免费 | 国产福利91精品一区二区三区 | 欧美在线资源 | 一区二区三区四区不卡视频 | 色一情一乱一伦一区二区三区 | 亚洲狠狠丁香婷婷综合久久久 | 四虎影| 中文av电影 | 日韩av一区二区在线观看 | 伊人久久伊人 | 精品国产精品 | 亚洲日韩中文字幕 | 视频1区2区 | 91中文字幕在线观看 | 精品日韩一区二区 | 精品国产18久久久久久二百 | 中国一级特黄真人毛片免费观看 | 亚洲 欧美 另类 日韩 | 一区二区日韩 | 久久久久久成人 |