MongoDb與其餘關係型數據庫的CRUD操做對照關係

1、術語與概念對照表
    這個表格主要說明mongodb與其餘關係型數據庫在術語與概念上的區別。
 
 
SQL Terms/Concepts MongoDB Terms/Concepts
database database
table collection
row document or BSON document
column field
index index
table joins embedded documents and linking

primary keyhtml

Specify any unique column or column combination as primary key.sql

primary keymongodb

In MongoDB, the primary key is automatically set to the_id field.數據庫

aggregation (e.g. group by)

aggregation pipelineapp

See the SQL to Aggregation Mapping Chart.函數

2、示例建立和修改數據表結構(create and alter) 建立數據庫的操做請查看個人這篇文章http://www.cnblogs.com/whynever/p/3801150.html mongodb的基本操做

SQL Schema Statements MongoDB Schema Statements
CREATE TABLE users (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    user_id Varchar(30),
    age Number,
    status char(1),
    PRIMARY KEY (id)
)

Implicitly created on first insert() operation. The primary key _id is automatically added if _id field is not specified.spa

db.users.insert( {
    user_id: "abc123",
    age: 55,
    status: "A"
 } )

However, you can also explicitly create a collection:code

db.createCollection("users")
ALTER TABLE users
ADD join_date DATETIME

Collections do not describe or enforce the structure of its documents; i.e. there is no structural alteration at the collection level.htm

However, at the document level, update() operations can add fields to existing documents using the $set operator.blog

db.users.update(
    { },
    { $set: { join_date: new Date() } },
    { multi: true }
)
ALTER TABLE users
DROP COLUMN join_date

Collections do not describe or enforce the structure of its documents; i.e. there is no structural alteration at the collection level.

However, at the document level, update() operations can remove fields from documents using the $unset operator.

db.users.update(
    { },
    { $unset: { join_date: "" } },
    { multi: true }
)
CREATE INDEX idx_user_id_asc
ON users(user_id)
db.users.ensureIndex( { user_id: 1 } )
CREATE INDEX
       idx_user_id_asc_age_desc
ON users(user_id, age DESC)
db.users.ensureIndex( { user_id: 1, age: -1 } )
DROP TABLE users
db.users.drop()

3、插入數據(insert save)

SQL INSERT Statements MongoDB insert() Statements
INSERT INTO users(user_id,  age, status)
VALUES ("bcd001", 45, "A")
db.users.insert(
   { user_id: "bcd001", age: 45, status: "A" }
)
        關於插入數據的更多信息( http://docs.mongodb.org/manual/reference/method/db.collection.insert/#db.collection.insert)

4、查詢數據(select操做)

SQL SELECT Statements MongoDB find() Statements
SELECT * FROM users
db.users.find()
SELECT id,  user_id, status FROM users
db.users.find({ }, { user_id: 1, status: 1 } )
SELECT user_id, status FROM users
db.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, status: 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" } ).sort( { user_id: 1 } )
SELECT *
FROM users
WHERE status = "A"
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()

5、更新數據(Update操做)

SQL Update Statements MongoDB update() Statements
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 }
)

6、刪除數據

SQL Delete Statements(SQL操做) MongoDB remove() Statements(Mongo操做)
DELETE FROM users WHERE status = "D"
db.users.remove( { status: "D" } )
DELETE FROM users
db.users.remove({})
 更多信息,點擊這裏查看官方文檔 http://docs.mongodb.org/manual/reference/sql-comparison/
 
附錄: 一些聚合函數的術語與概念對照表
SQL Terms, Functions, and Concepts MongoDB Aggregation Operators
WHERE $match
GROUP BY $group
HAVING $match
SELECT $project
ORDER BY $sort
LIMIT $limit
SUM() $sum
COUNT() $sum
join No direct corresponding operator; however, the $unwindoperator allows for somewhat similar functionality, but with fields embedded within the document.
相關文章
相關標籤/搜索