您的位置:首页 > 数据库 > Mongodb

MongoDB 与 SQL 语句映射关系(持续更新中)

2017-09-30 17:44 344 查看
前序:
无论是刚开始接触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 } } }
] )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: