标签:drop insert tom god 学习 let bin size ica
一、术语和概念的对比
| SQL | MongoDB | 
|---|---|
| database | database | 
| row | document or BSON document | 
| column | field | 
| index | index | 
| table joins | $lookup, embedded documents | 
| primary key Specify any unique column or column combination as primary key. | In MongoDB, the primary key is automatically set to the _id field. | 
| aggregation (e.g. group by) | aggregation pipeline 
 | 
二、对库和表的操作语句对比
| SQL | MongoDB | 
|---|---|
| CREATE TABLE people (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    user_id Varchar(30),
    age Number,
    status char(1),
    PRIMARY KEY (id)
)
 | 
 db.people.insertOne( {
    user_id: "abc123",
    age: 55,
    status: "A"
 } )
也可以用一下语句创建collection db.createCollection("people")
 | 
| ALTER TABLE people
ADD join_date DATETIME
 | db.people.updateMany(
    { },
    { $set: { join_date: new Date() } }
)
 | 
| ALTER TABLE people
DROP COLUMN join_date
 | db.people.updateMany(
    { },
    { $unset: { "join_date": "" } }
)
 | 
| CREATE INDEX idx_user_id_asc
ON people(user_id)
 | db.people.createIndex( { user_id: 1 } )
 | 
| CREATE INDEX
       idx_user_id_asc_age_desc
ON people(user_id, age DESC)
 | db.people.createIndex( { user_id: 1, age: -1 } )
 | 
| DROP TABLE people
 | db.people.drop() | 
三、insert语句的对比
| SQL INSERT Statements | MongoDB insertOne() Statements | 
|---|---|
| INSERT INTO people(user_id,
                  age,
                  status)
VALUES ("bcd001",
        45,
        "A")
 | db.people.insertOne(
   { user_id: "bcd001", age: 45, status: "A" }
) | 
四、select语句的对比
| SQL SELECT Statements | MongoDB find() Statements | 
|---|---|
| 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"
 | 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
 | db.people.find(
   { age: { $lt: 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 *
FROM people
WHERE status = "A"
ORDER BY user_id DESC
 | 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
 | db.people.findOne()
or db.people.find().limit(1)
 | 
| SELECT *
FROM people
LIMIT 5
SKIP 10
 | db.people.find().limit(5).skip(10)
 | 
| EXPLAIN SELECT *
FROM people
WHERE status = "A"
 | db.people.find( { status: "A" } ).explain() | 
五、update语句的对比
| SQL Update Statements | MongoDB updateMany() Statements | 
|---|---|
| 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语句的对比
| SQL Delete Statements | MongoDB deleteMany() Statements | 
|---|---|
| DELETE FROM people
WHERE status = "D"
 | db.people.deleteMany( { status: "D" } )
 | 
| DELETE FROM people
 | db.people.deleteMany({}) | 
MongoDB学习第七篇 --- sql和mongodb对比
标签:drop insert tom god 学习 let bin size ica
原文地址:http://www.cnblogs.com/malcolmfeng/p/6937517.html