MongoDB文档翻译-CRUD操作-SQL与MongoDB对应表

英文原文地址:https://docs.mongodb.com/v3.2/reference/sql-comparison/
本文章属个人翻译,作个人学习之用,如有雷同,纯属巧合。如有错误之处,欢迎指正。

SQL与MongoDB对应表

除以下的表格之外,你可能也想去FAQ部分查看关于MongoDB的更多问题。

术语和概念

以下表格给出了各种SQL术语和概念与相对应的MongoDB术语和概念

SQL 术语/概念MongoDB 术语/概念
数据库(database)数据库(database)
表(table)集合(collection)
行(row)文档或BSON文档(document或BSON docuemnt)
列(column)字段(field)
索引(index)索引(index)
表连接(table joins)嵌入文档和链接(embedded documents and linking)
主键。把唯一的列 或列组合作为主键主键。MongoDB自动把主键设为_id字段
聚集/分组(aggregation (e.g. group by))聚集管道

可执行文件

以下表格给出了一些数据库可执行文件和对于的MongoDB可执行文件的对应关系。该表格并不是详尽的。

MongoDBMySQLOracleInformixDB2
数据库服务器mongodmysqldoracleIDS
数据库客户端mongomysqlsqlplusDB-Access

示例

下面的例子给出了各种SQL语句与MongoDB语句的对应表。以下例子假设如下条件:

  • SQL例子假设表的名字是users

  • MongoDB例子假设集合的名字是users,并且包含如下原型的文档:

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

Create 和 Alter

以下表格给出了SQL语句与MongoDB语句在表级别上的操作的对应关系。

SQLMongoDB
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
集合并不描述或强制其文档的结构,在文档级别没有结构的修改
在文档级别,update()操作可以用$set操作符给存在的文档添加字段。
db.users.update(
    { },
    {$set: {join_date: new Date()}},
    {multi: true}
)
ALTER TABLE users
DROP COLUMN join_date
集合并不描述或强制其文档的结构,在文档级别没有结构的修改
在文档级别,update()操作可以用$unset操作符从文档移除字段。
db.users.update(
    { },
    {$unset: {join_date: new Date()}},
    {multi: true}
)
CREATE INDEX idx_user_id_asc
    ON users(user_id)
db.users.createIndex({user_id: 1})
CREATE INDEX
    idx_user_id_asc_age_desc
    ON users(user_id,age DESC)
db.users.createIndex({user_id: 1, age: -1})
DROP TABLE usersdb.users.drop()

Insert

SQLMongoDB
INSERT INTO users(user_id,
    age,
    status)
VALUES (“bcd001”,
    45,
    “A”
);
db.users.insert(
    {user_id:”bcd001”, age: 45, status: “A” }
)

Select

SQLMongoDB
SELECT * FROM usersdb.users.find()
SELECT id,
    user_id,
    status
FROM users
db.users.find(
    { },
    { user_id: 1, status: 1}
)
SELECT user_id, status FROM usersdb.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, satus: 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”}).order({user_id: 1})
SELECT *
FROM users
ORDER BY user_id DESC
db.users.find({status: “A”}).sort({user_id: -1})
SELECT COUNT(*)
FROM users
db.users.count()

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

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

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

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()

Update

SQLMongoDB
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}
)

Delete

SQLMongoDB
DELETE FROM users
WHERE status=”D”
db.users.remove({status: “D”})
DELETE FROM usersdb.users.remove({})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值