MongoDb与其他关系型数据库的CRUD操作对照关系
| 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 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 See the SQL to Aggregation Mapping Chart. |
二、示例创建和修改数据表结构(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 db.users.insert( {
user_id: "abc123",
age: 55,
status: "A"
} )
However, you can also explicitly create a collection: 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. However, at the document level, 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, 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() |
三、插入数据(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" }
)
|
四、查询数据(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()
|
五、更新数据(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 }
)
|
六、删除数据
| 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({})
|
| 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. |
作者:北羽
出处:http://www.cnblogs.com/whynever
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
如有问题,可以通过418537487@qq.com 联系我,非常感谢。

浙公网安备 33010602011771号