SQL to MongoDB Mapping Chart

http://docs.mongodb.org/manual/reference/sql-comparison/

In addition to the charts that follow, you might want to consider the Frequently Asked Questions section for a selection of common questions about MongoDB.

Terminology and Concepts

The following table presents the various SQL terminology and concepts and the corresponding MongoDB terminology and concepts.

SQL Terms/Concepts MongoDB Terms/Concepts
database database
table collection
row document or BSON document
column field
index index
table joins embedded documents and linking

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.

Executables

The following table presents some database executables and the corresponding MongoDB executables. This table is not meant to be exhaustive.

  MongoDB MySQL Oracle Informix DB2
Database Server mongod mysqld oracle IDS DB2 Server
Database Client mongo mysql sqlplus DB-Access DB2 Client

Examples

The following table presents the various SQL statements and the corresponding MongoDB statements. The examples in the table assume the following conditions:

  • The SQL examples assume a table named users.
  • The MongoDB examples assume a collection named users that contain documents of the following prototype:
    {
      _id: ObjectId("509a8fb2f3f4948bd2f983a0"),
      user_id: "abc123",
      age: 55,
      status: ‘A‘
    }
    

Create and Alter

The following table presents the various SQL statements related to table-level actions and the corresponding MongoDB statements.

SQL Schema Statements MongoDB Schema Statements
CREATE TABLE users (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    user_id Varchar(30),
    age Number,
    status char(1),
    PRIMARY KEY (id)
)

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

db.users.insert( {
    user_id: "abc123",
    age: 55,
    status: "A"
 } )

However, you can also explicitly create a collection:

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

Collections do not describe or enforce the structure of its documents; i.e. there is no structural alteration at the collection level.

However, at the document level, update() operations can add fields to existing documents using the $set operator.

db.users.update(
    { },
    { $set: { join_date: new Date() } },
    { multi: true }
)
ALTER TABLE users
DROP COLUMN join_date

Collections do not describe or enforce the structure of its documents; i.e. there is no structural alteration at the collection level.

However, at the document level, update() operations can remove fields from documents using the $unset operator.

db.users.update(
    { },
    { $unset: { join_date: "" } },
    { multi: true }
)
CREATE INDEX idx_user_id_asc
ON users(user_id)
db.users.ensureIndex( { user_id: 1 } )
CREATE INDEX
       idx_user_id_asc_age_desc
ON users(user_id, age DESC)
db.users.ensureIndex( { user_id: 1, age: -1 } )
DROP TABLE users
db.users.drop()

For more information, see db.collection.insert(), db.createCollection(), db.collection.update(), $set, $unset, db.collection.ensureIndex(), indexes, db.collection.drop(), and Data Modeling Concepts.

Insert

The following table presents the various SQL statements related to inserting records into tables and the corresponding MongoDB statements.

SQL INSERT Statements MongoDB insert() Statements
INSERT INTO users(user_id,
                  age,
                  status)
VALUES ("bcd001",
        45,
        "A")
db.users.insert(
   { user_id: "bcd001", age: 45, status: "A" }
)

For more information, see db.collection.insert().

Select

The following table presents the various SQL statements related to reading records from tables and the corresponding MongoDB statements.

SQL SELECT Statements MongoDB find() Statements
SELECT *
FROM users
db.users.find()
SELECT id,
       user_id,
       status
FROM users
db.users.find(
    { },
    { user_id: 1, status: 1 }
)
SELECT user_id, status
FROM users
db.users.find(
    { },
    { user_id: 1, status: 1, _id: 0 }
)
SELECT *
FROM users
WHERE status = "A"
db.users.find(
    { status: "A" }
)
SELECT user_id, status
FROM users
WHERE status = "A"
db.users.find(
    { status: "A" },
    { user_id: 1, status: 1, _id: 0 }
)
SELECT *
FROM users
WHERE status != "A"
db.users.find(
    { status: { $ne: "A" } }
)
SELECT *
FROM users
WHERE status = "A"
AND age = 50
db.users.find(
    { status: "A",
      age: 50 }
)
SELECT *
FROM users
WHERE status = "A"
OR age = 50
db.users.find(
    { $or: [ { status: "A" } ,
             { age: 50 } ] }
)
SELECT *
FROM users
WHERE age > 25
db.users.find(
    { age: { $gt: 25 } }
)
SELECT *
FROM users
WHERE age < 25
db.users.find(
   { age: { $lt: 25 } }
)
SELECT *
FROM users
WHERE age > 25
AND   age <= 50
db.users.find(
   { age: { $gt: 25, $lte: 50 } }
)
SELECT *
FROM users
WHERE user_id like "%bc%"
db.users.find( { user_id: /bc/ } )
SELECT *
FROM users
WHERE user_id like "bc%"
db.users.find( { user_id: /^bc/ } )
SELECT *
FROM users
WHERE status = "A"
ORDER BY user_id ASC
db.users.find( { status: "A" } ).sort( { user_id: 1 } )
SELECT *
FROM users
WHERE status = "A"
ORDER BY user_id DESC
db.users.find( { status: "A" } ).sort( { user_id: -1 } )
SELECT COUNT(*)
FROM users
db.users.count()

or

db.users.find().count()
SELECT COUNT(user_id)
FROM users
db.users.count( { user_id: { $exists: true } } )

or

db.users.find( { user_id: { $exists: true } } ).count()
SELECT COUNT(*)
FROM users
WHERE age > 30
db.users.count( { age: { $gt: 30 } } )

or

db.users.find( { age: { $gt: 30 } } ).count()
SELECT DISTINCT(status)
FROM users
db.users.distinct( "status" )
SELECT *
FROM users
LIMIT 1
db.users.findOne()

or

db.users.find().limit(1)
SELECT *
FROM users
LIMIT 5
SKIP 10
db.users.find().limit(5).skip(10)
EXPLAIN SELECT *
FROM users
WHERE status = "A"
db.users.find( { status: "A" } ).explain()

For more information, see db.collection.find(), db.collection.distinct(), db.collection.findOne(), $ne $and, $or, $gt, $lt, $exists, $lte, $regex, limit(), skip(), explain(), sort(), and count().

Update Records

The following table presents the various SQL statements related to updating existing records in tables and the corresponding MongoDB statements.

SQL Update Statements MongoDB update() Statements
UPDATE users
SET status = "C"
WHERE age > 25
db.users.update(
   { age: { $gt: 25 } },
   { $set: { status: "C" } },
   { multi: true }
)
UPDATE users
SET age = age + 3
WHERE status = "A"
db.users.update(
   { status: "A" } ,
   { $inc: { age: 3 } },
   { multi: true }
)

For more information, see db.collection.update(), $set, $inc, and $gt.

Delete Records

The following table presents the various SQL statements related to deleting records from tables and the corresponding MongoDB statements.

SQL Delete Statements MongoDB remove() Statements
DELETE FROM users
WHERE status = "D"
db.users.remove( { status: "D" } )
DELETE FROM users
db.users.remove({})

For more information, see db.collection.remove().

SQL to MongoDB Mapping Chart

时间: 2024-10-28 16:42:55

SQL to MongoDB Mapping Chart的相关文章

mongodb 语句和SQL语句对应(SQL to Aggregation Mapping Chart)

SQL to Aggregation Mapping Chart https://docs.mongodb.com/manual/reference/sql-aggregation-comparison/ On this page Examples Additional Resources The aggregation pipeline allows MongoDB to provide native aggregation capabilities that corresponds to m

(译文)SQL与Mongodb聚合之前的对应关系

本文翻译自:https://docs.mongodb.com/manual/reference/sql-aggregation-comparison/ 由于本人也在学习Mongodb,项目中用到聚合,看到文档这篇不错就翻译一下(仅供参考) SQL中的聚合函数和Mongodb中的管道相互对应的关系: WHERE $match GROUP BY $group HAVING $match SELECT $project ORDER BY $sort LIMIT $limit SUM() $sum CO

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. primary key In MongoDB, the primar

在zepplin 使用spark sql 查询mongodb的数据

1.下载zepplin 进入官网下载地址,下载完整tar包. 2.解压 tar zxvf zeppelin-0.7.3.tgz 3.修改配置 新建配置文件 cp zeppelin-env.sh.template zeppelin-env.sh 修改配置文件 vi zeppelin-env.sh # 设置java home 路径 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre # 设

Mongodb 和 普通数据库 各种属性 和语句 的对应

SQL to MongoDB Mapping Chart In addition to the charts that follow, you might want to consider the Frequently Asked Questions section for a selection of common questions about MongoDB. Terminology and Concepts The following table presents the various

mongoDB知识汇总

Agenda Traits Agility,Scalability,high-performance Free and open-source NoSQL database JSON-like Document-oriented database(schema flexible) Document Database A record in MongoDB is a document, which is a data structure composed of field and value pa

MongoDB安装部署及基本操作

MongoDB 第1章 数据库管理系统 1.1 什么是数据? 数据是指未经过处理的原始记录,一般而言,数据缺乏组织及分类,无法明确的表达事物代表的意义,数据描述事物可以是描述事物的符号记录,是可定义为意义的实体,设计事物的存在形式,是关于事件之一组离散且客观的事实藐视,是构成讯息和知识的原始材料 1.2 什么是数据库管理系统? ?  数据库管理系统,是一种针对对象数据库,为管理数据库而设计的大型电脑软件管理系统, ?  具有代表性的数据管理系统有: Oracle.Microsoft SQL Se

MongoDB 入门篇

1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 数据(英语:data),是指未经过处理的原始记录. 一般而言,数据缺乏组织及分类,无法明确的表达事物代表的意义,它可能是一堆的杂志.一大叠的报纸.数种的开会记录或是整本病人的病历纪录.数据描述事物的符号记录,是可定义为意义的实体,涉及事物的存在形式.是关于事件之一组离散且客观的事实描述,是构成讯息和知识的原始材料. 1.1.2 什么是数据库管理系统? 数据库管理系统(英语:database ma

对象文件映射(ODM (Object-Document Mapper))

除了可以 映射关系数据库的表 之外,Phalcon还可以使用NoSQL数据库如MongoDB等.Phalcon中的ODM具有可以非常容易的实现如下功能:CRUD,事件,验证等. 因为NoSQL数据库中无sql查询及计划等操作故可以提高数据操作的性能.再者,由于无SQL语句创建的操作故可以减少SQL注入的危险. 当前Phalcon中支持的NosSQL数据库如下: 名称 描述 MongoDB MongoDB是一个稳定的高性能的开源的NoSQL数据 创建模型(Creating Models)? NoS