SQL到MongoDB映射表
2015-07-03 10:36
771 查看
针对以下图表,你可能会考虑查看 Frequently Asked Questions 章节查询一些关于MongoDB的常用问题。
术语和概念
下表中列出了多个SQL中的术语和概念以及相对应的MongoDB中的术语和概念。
可执行文件
下表中列出了一些数据库的可执行文件名以及相对应的MongoDB的可执行文件名。表中的数据并不是详尽的。
示例
下表中列出了多种SQL语句以及相对应的MongoDB的语句。表中的示例有以下假设条件:
SQL示例假设在一个名叫``users``的表上执行。
MongoDB示例假设在一个名叫``users``的集合上执行,并且包含一些文档,这些文档有如下属性:
{
_id: ObjectId("509a8fb2f3f4948bd2f983a0"),
user_id:
"abc123",
age:
55,
status:
'A'
}
创建和修改
下表中列出了多种表级别操作的SQL语句以及相对应的MongoDB的语句。
获取更多信息,查看 db.collection.insert(), db.createCollection(), db.collection.update(), $set,$unset, db.collection.ensureIndex(), indexes, db.collection.drop(),
and 数据建模理论.
插入
下表中列出了多种关于插入操作的SQL语句以及相对应的MongoDB语句。
获取更多信息,查看 db.collection.insert().
查询
下表中列出了多种关于查询操作的SQL语句以及相对应的MongoDB语句。
获取更多信息,查看 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语句。
获取更多信息,查看 db.collection.update(), $set, $inc,
and $gt.
删除
下表中列出了多种关于删除的SQL语句以及相关的MongoDB语句。
获取更多信息,查看 db.collection.remove().
术语和概念
下表中列出了多个SQL中的术语和概念以及相对应的MongoDB中的术语和概念。
SQL 术语/概念 | MongoDB 术语/概念 |
数据库 | 数据库 |
表 | 集合 |
行 | 文档 or BSON 文档 |
列 | 字段 |
索引 | 索引 |
表连接 | 内嵌文档和 |
主键 指定任何唯一列或复合列作为主键。 | 主键 在MongoDB里,主键会自动设置为 _id 列。 |
聚合(e.g. group by) | 聚合管道 查看文档 SQL to Aggregation Mapping Chart。 |
下表中列出了一些数据库的可执行文件名以及相对应的MongoDB的可执行文件名。表中的数据并不是详尽的。
MongoDB | MySQL | Oracle | Informix | DB2 | |
Database Server | mongod | mysqld | oracle | IDS | DB2 Server |
Database Client | mongo | mysql | sqlplus | DB-Access | DB2 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 users ADD join_date DATETIME | 集合中并不强制规定文档的结构;比如:集合级别并没有文档结构转换的语句。 然而,在文档级别,可以使用 :method:`~db.collection.update()`方法中的 :update:`$set`操作符添加新的字段到现有的文档中。 db.users.update( { }, { $set: { join_date: new Date() } }, { multi: true } ) |
ALTER TABLE users DROP COLUMN join_date | 集合中并不强制规定文档的结构;比如:集合级别并没有文档结构转换的语句。 然而,在文档级别,可以使用 update()`方法中的:update:`$unset 操作符从现有文档中删除一个字段。 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() |
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" } ) |
查询
下表中列出了多种关于查询操作的SQL语句以及相对应的MongoDB语句。
SQL 查询语句 | MongoDB find() 语句 |
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() |
and count().
更新
下表中列出了多种关于更新的SQL语句以及相对应的MongoDB语句。
SQL 更新语句 | MongoDB update() 语句 |
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 } ) |
and $gt.
删除
下表中列出了多种关于删除的SQL语句以及相关的MongoDB语句。
SQL 删除语句 | MongoDB remove() 语句 |
DELETE FROM users WHERE status = "D" | db.users.remove( { status: "D" } ) |
DELETE FROM users | db.users.remove({}) |
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- 如何在 Ubuntu 上安装 MongoDB
- perl操作MongoDB报错undefined symbol: HeUTF8解决方法
- C#中使用1.7版本驱动操作MongoDB简单例子
- MongoDB系列教程(四):设置用户访问权限
- php实现的mongodb操作类实例
- 解决mongodb在ubuntu下启动失败,提示couldn‘t remove fs lock errno:9 Bad file descriptor的错误
- 在PostgreSQL的基础上创建一个MongoDB的副本的教程
- java操作mongodb示例分享
- php对mongodb的扩展(初出茅庐)
- 作为PHP程序员应该了解MongoDB的五件事
- 基于MySQL到MongoDB简易对照表的详解
- MongoDB入门教程之C#驱动操作实例
- MongoDB为用户设置访问权限
- MongoDB db.serverStatus()输出内容中文注释
- mongodb与mysql命令详细对比
- Ubuntu中安装MongoDB及执行一些简单操作笔记
- MongoDB 语法使用小结