cqlinx 发表于 2017-12-15 16:09:15

MongoDB学习第七篇

  一、术语和概念的对比

SQLMongoDBdatabase
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.
  primary key
  In MongoDB, the primary key is automatically set to the _id field.

aggregation (e.g. group by)  aggregation pipeline
  二、对库和表的操作语句对比

SQLMongoDB  

CREATE TABLE people (  id MEDIUMINT NOT NULL
  AUTO_INCREMENT,
  user_id Varchar(30),
  age Number,
  status char(1),
  PRIMARY KEY (id)
  
)
  

  

   直接执行insert操作即可,如果表不存在,自动创建
  

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>
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 StatementsMongoDB 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 StatementsMongoDB find() Statements  

SELECT *  
FROM people
  

  

  

db.people.find()  

  

  

SELECT>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 StatementsMongoDB 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 StatementsMongoDB deleteMany() Statements  

DELETE FROM people  
WHERE status = "D"
  

  

  

db.people.deleteMany( { status: "D" } )  

  

  

DELETE FROM people  

  

  

db.people.deleteMany({})  
页: [1]
查看完整版本: MongoDB学习第七篇