打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL到MongoDB映射表

针对以下图表,你可能会考虑查看 常见问题 章节查询一些关于MongoDB的常用问题。

术语和概念

下表中列出了多个SQL中的术语和概念以及相对应的MongoDB中的术语和概念。

SQL 术语/概念

MongoDB 术语/概念

数据库

database

collection

document or BSON 文档

field

索引

index

表连接

内嵌文档和链接

主键

指定任何唯一列或复合列作为主键。

primary key

在MongoDB里,主键会自动设置为 _id 列。

聚合(e.g. group by)

聚合管道

查看文档 SQL to Aggregation Mapping Chart

可执行文件

下表中列出了一些数据库的可执行文件名以及相对应的MongoDB的可执行文件名。表中的数据并不是详尽的。

 MongoDBMySQLOracleInformixDB2
Database Servermongod

mysqld

oracleIDSDB2 Server
Database ClientmongomysqlsqlplusDB-AccessDB2 Client

示例

下表中列出了多种SQL语句以及相对应的MongoDB的语句。表中的示例有以下假设条件:

  • SQL示例假设在一个名叫``users``的表上执行。

  • MongoDB示例假设在一个名叫``users``的集合上执行,并且包含一些文档,这些文档有如下属性:

    {  _id: ObjectId("509a8fb2f3f4948bd2f983a0"),  user_id: "abc123",  age: 55,  status: 'A'}

创建和修改

下表中列出了多种表级别操作的SQL语句以及相对应的MongoDB的语句。

SQL 建模语句

MongoDB 建模语句

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

第一次执行 insert() 操作时隐式创建。如果文档中不指定``_id``列,那么会自动添加``_id``列并默认为主键。

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

当然,你也可以显式的创建一个集合:

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

集合中并不强制规定文档的结构;比如:集合级别并没有文档结构转换的语句。

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

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

集合中并不强制规定文档的结构;比如:集合级别并没有文档结构转换的语句。

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

db.users.update(    { },    { $unset: { join_date: "" } },    { multi: true })
CREATE INDEX idx_user_id_ascON users(user_id)
db.users.createIndex( { user_id: 1 } )
CREATE INDEX       idx_user_id_asc_age_descON users(user_id, age DESC)
db.users.createIndex( { 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.createIndex(), indexes,db.collection.drop(), and 数据建模理论.

插入

下表中列出了多种关于插入操作的SQL语句以及相对应的MongoDB语句。

SQL 插入语句

Mongodb insert() 语句

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

获取更多信息,查看 db.collection.insert().

查询

下表中列出了多种关于查询操作的SQL语句以及相对应的MongoDB语句。

注解

The find() method always includes the _idfield in the returned documents unless specifically excluded throughprojection. Some of the SQL queries below may include an_id field to reflect this, even if the field is not included in thecorresponding find() query.

SQL 查询语句

MongoDB find() 语句

SELECT *FROM users
db.users.find()
SELECT id,       user_id,       statusFROM users
db.users.find(    { },    { user_id: 1, status: 1 })
SELECT user_id, statusFROM users
db.users.find(    { },    { user_id: 1, status: 1, _id: 0 })
SELECT *FROM usersWHERE status = "A"
db.users.find(    { status: "A" })
SELECT user_id, statusFROM usersWHERE status = "A"
db.users.find(    { status: "A" },    { user_id: 1, status: 1, _id: 0 })
SELECT *FROM usersWHERE status != "A"
db.users.find(    { status: { $ne: "A" } })
SELECT *FROM usersWHERE status = "A"AND age = 50
db.users.find(    { status: "A",      age: 50 })
SELECT *FROM usersWHERE status = "A"OR age = 50
db.users.find(    { $or: [ { status: "A" } ,             { age: 50 } ] })
SELECT *FROM usersWHERE age > 25
db.users.find(    { age: { $gt: 25 } })
SELECT *FROM usersWHERE age < 25
db.users.find(   { age: { $lt: 25 } })
SELECT *FROM usersWHERE age > 25AND   age <= 50
db.users.find(   { age: { $gt: 25, $lte: 50 } })
SELECT *FROM usersWHERE user_id like "%bc%"
db.users.find( { user_id: /bc/ } )
SELECT *FROM usersWHERE user_id like "bc%"
db.users.find( { user_id: /^bc/ } )
SELECT *FROM usersWHERE status = "A"ORDER BY user_id ASC
db.users.find( { status: "A" } ).sort( { user_id: 1 } )
SELECT *FROM usersWHERE 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 usersWHERE 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 usersLIMIT 1
db.users.findOne()

or

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

获取更多信息,查看 db.collection.find(), db.collection.distinct(), db.collection.findOne(), $ne $and, $or, $gt, $lt, $exists, $lte, $regex, limit(), skip(), explain(), sort(), and count().

更新

下表中列出了多种关于更新的SQL语句以及相对应的MongoDB语句。

SQL 更新语句

MongoDB update() 语句

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

获取更多信息,查看 db.collection.update(), $set, $inc, and $gt.

删除

下表中列出了多种关于删除的SQL语句以及相关的MongoDB语句。

SQL 删除语句

MongoDB remove() 语句

DELETE FROM usersWHERE status = "D"
db.users.remove( { status: "D" } )
DELETE FROM users
db.users.remove({})
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深入详解SQL中的Null
MongoDB(四):查询
MongoDB: 10. MapReduce
浅谈MongoDB中几种不同查询方法
MongoDB - 增删改查及聚合操作
MongoDB aggregate 统计运用篇 个人总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服