成人免费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語言日志型

2023-02-10 09:04:27

2022-06-20 09:01:23

Git插件項目

2020-05-14 16:35:21

Kubernetes網絡策略DNS

2022-08-01 11:33:09

用戶分析標簽策略

2019-08-13 15:36:57

限流算法令牌桶

2023-09-11 08:13:03

分布式跟蹤工具

2021-04-08 07:37:39

隊列數據結構算法

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

2019-05-14 09:31:16

架構整潔軟件編程范式

2023-10-17 08:15:28

API前后端分離

2020-11-06 10:01:06

Nginx
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品国产三级国产aⅴ中文 | 成在线人视频免费视频 | 在线免费观看黄a | 久久久影院 | 国产精品美女久久久久aⅴ国产馆 | 欧美成人久久 | 日韩中文字幕一区二区三区 | 亚洲精品中文字幕 | 成人免费大片黄在线播放 | 欧美涩涩网 | 亚洲精品国产电影 | 综合二区| 中文字幕 国产精品 | 日韩欧美手机在线 | 欧美电影一区 | 国产精品爱久久久久久久 | 亚洲国产91 | 国产成人精品亚洲日本在线观看 | 激情毛片 | 伊人网伊人网 | 久久久久久久久99 | 99精品视频一区二区三区 | 蜜臀久久99精品久久久久久宅男 | 91在线导航 | 91久久北条麻妃一区二区三区 | 日韩资源 | 亚洲一区二区在线播放 | 国产午夜精品福利 | 男女羞羞视频在线 | 日韩国产欧美一区 | 欧美亚洲视频 | 亚洲第一天堂无码专区 | 国产精品久久精品 | 午夜免费观看网站 | 北条麻妃国产九九九精品小说 | 99在线免费观看视频 | 成人久久网 | 亚洲伊人久久综合 | 一级特黄网站 | 欧产日产国产精品视频 | 欧美激情综合五月色丁香小说 |