MongoDB 与 SQL 语句映射关系(持续更新中)
2017-09-30 17:44
344 查看
前序:
无论是刚开始接触mongodb,还是接触了一段时间的老用户,每次想写一个DML语句都觉得有点费劲,
因为mongo的语法确实与RDMS不一样,所以为了方便我也为了方便后人,故整理一下他们之间的对应关系
(会结合官网文档以及自己的一些实践总结,会持续更新。。。)
无论是刚开始接触mongodb,还是接触了一段时间的老用户,每次想写一个DML语句都觉得有点费劲,
因为mongo的语法确实与RDMS不一样,所以为了方便我也为了方便后人,故整理一下他们之间的对应关系
(会结合官网文档以及自己的一些实践总结,会持续更新。。。)
SQL | MongoDB |
database | database |
table | collectioin |
row | document |
column | field |
SELECT * FROM people | db.people.find() |
SELECT id, user_id, status FROM people | db.people.find( { }, { user_id: 1, status: 1 }) |
SELECT user_id, status FROM people | db.people.find( { }, { user_id: 1, status: 1, _id: 0 }) |
SELECT * FROM people WHERE status = "A" | db.people.find( { status: "A" }) |
SELECT user_id, status FROM people WHERE status = "A" | db.people.find( { status: "A" }, { user_id: 1, status: 1, _id: 0 }) |
SELECT * FROM people WHERE status != "A" 10585 | db.people.find( { status: { $ne: "A" } }) |
SELECT * FROM people WHERE status = "A" AND age = 50 | db.people.find( { status: "A", age: 50 }) |
SELECT * FROM people WHERE status = "A" OR age = 50 | db.people.find( { $or: [ { status: "A" } , { age: 50 } ] }) |
SELECT * FROM people WHERE age > 25 | db.people.find( { age: { $gt: 25 } }) |
SELECT * FROM people WHERE age > 25 AND age <= 50 | db.people.find( { age: { $gt: 25, $lte: 50 } }) |
SELECT * FROM people WHERE user_id like "%bc%" | db.people.find( { user_id: /bc/ } ) -or- db.people.find( { user_id: { $regex: /bc/ } } ) |
SELECT * FROM people WHERE user_id like "bc%" | db.people.find( { user_id: /^bc/ } ) -or- db.people.find( { user_id: { $regex: /^bc/ } } ) |
SELECT * FROM people WHERE status = "A" ORDER BY user_id ASC | db.people.find( { status: "A" } ).sort( { user_id: 1 } ) |
SELECT COUNT(*) FROM people | db.people.count() -or- db.people.find().count() |
SELECT COUNT(user_id) FROM people | db.people.count( { user_id: { $exists: true } } ) -or- db.people.find( { user_id: { $exists: true } } ).count() |
SELECT COUNT(*) FROM people WHERE age > 30 | db.people.count( { age: { $gt: 30 } } ) -or- db.people.find( { age: { $gt: 30 } } ).count() |
SELECT DISTINCT(status) FROM people | db.people.distinct( "status" ) |
SELECT * FROM people LIMIT 1 -or- SELECT TOP 1 * FROM people | db.people.findOne() -or- db.people.find().limit(1) |
EXPLAIN SELECT * FROM people WHERE status = "A" | db.people.find( { status: "A" } ).explain() |
UPDATE people SET status = "C" WHERE age > 25 | db.people.updateMany( { age: { $gt: 25 } }, { $set: { status: "C" } }) |
UPDATE people SET age = age + 3 WHERE status = "A" | db.people.updateMany( { status: "A" } , { $inc: { age: 3 } }) |
DELETE FROM people WHERE status = "D" | db.people.deleteMany( { status: "D" } ) -or- db.people.remove({status:"D"}) |
DELETE FROM people | db.people.remove({}) |
SELECT state, SUM(pop) AS totalPop FROM zipcodes GROUP BY state HAVING totalPop >= (10*1000*1000) | db.zipcodes.aggregate( [ { $group: { _id: "$state", totalPop: { $sum: "$pop" } } }, { $match: { totalPop: { $gte: 10*1000*1000 } } } ] ) |
相关文章推荐
- sql 常用语句 [持续更新]
- Mysql实用SQL语句总结(持续更新)
- IBM DB2 AS400 sql语句(供个人参考,持续更新)
- MYSQL常用SQL语句(持续更新)
- 精妙SQL语句介绍[持续更新]
- Oracle常用SQL语句(持续更新)
- 数据库-oracle常用SQL语句整理(持续更新中)
- 【小平工作日志】Mysql 相关sql语句(新建、更新等)持续更新中……
- sql语句的一些小积累 持续更新。。。
- 实用的一条SQL语句…(持续更新…)
- SQL语句常见问题的总结(持续更新)
- SQl常用语句总结(持续更新……)
- SQL语句常见问题的总结(持续更新)
- SQL语句学习笔记(持续更新)
- SQL语句汇总(持续更新)
- sql 语句的一此心得/小技巧 (持续更新中....)
- 实用的T_sql语句收藏(持续更新)
- SQL Server 2000 一些有用的SQL语句搜集整理(持续更新 )
- SQL语句常见问题的总结(持续更新)
- SqlServer学习-常用的sql语句-持续更新中