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

SQL to MongoDB Mapping Chart

2017-12-05 14:29 519 查看
MongoDB CRUD Operations > 
SQL to MongoDB Mapping Chart


SQL to MongoDB Mapping Chart

On this page
Terminology
and Concepts
Executables
Examples
Additional
Resources

In addition to the charts that follow, you might want to consider the Frequently
Asked Questions section for a selection of common questions about MongoDB.


Terminology and Concepts

The following table presents the various SQL terminology and concepts and the corresponding MongoDB terminology and concepts.
SQL Terms/ConceptsMongoDB Terms/Concepts
databasedatabase
tablecollection
rowdocument or BSON document
columnfield
indexindex
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 _idfield.
aggregation (e.g. group by)aggregation pipeline
See the SQL to Aggregation
Mapping Chart.


Executables

The following table presents some database executables and the corresponding MongoDB executables. This table is not meant to be exhaustive.
 MongoDBMySQLOracleInformixDB2
Database Server
mongod
mysqld
oracle
IDS
DB2 Server
Database Client
mongo
mysql
sqlplus
DB-Access
DB2 Client


Examples

The following table presents the various SQL statements and the corresponding MongoDB statements. The examples in the table assume the following conditions:

The SQL examples assume a table named 
people
.

The MongoDB examples assume a collection named 
people
 that contain documents of
the following prototype:

{
_id: ObjectId("509a8fb2f3f4948bd2f983a0"),
user_id: "abc123",
age: 55,
status: 'A'
}



Create and Alter

The following table presents the various SQL statements related to table-level actions and the corresponding MongoDB statements.
SQL Schema StatementsMongoDB Schema Statements
CREATE TABLE people (
id MEDIUMINT NOT NULL
AUTO_INCREMENT,
user_id Varchar(30),
age Number,
status char(1),
PRIMARY KEY (id)
)


Implicitly created on first 
insertOne()
 or 
insertMany()
operation.
The primary key 
_id
 is automatically added if 
_id
 field
is not specified.

db.people.insertOne( {
user_id: "abc123",
age: 55,
status: "A"
} )


However, you can also explicitly create a collection:

db.createCollection("people")


ALTER TABLE people
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, 
updateMany()
 operations
can add fields to existing documents using the 
$set
 operator.

db.people.updateMany(
{ },
{ $set: { join_date: new Date() } }
)


ALTER TABLE people
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, 
updateMany()
 operations
can remove fields from documents using the 
$unset
 operator.

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()


For more information, see:
db.collection.insertOne()

db.collection.insertMany()

db.createCollection()

db.collection.updateMany()

$set

$unset

db.collection.createIndex()

Indexes
db.collection.drop()

Data Modeling Concepts.


Insert

The following table presents the various SQL statements related to inserting records into tables and the corresponding MongoDB statements.
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" }
)


For more information, see 
db.collection.insertOne()
.


Select

The following table presents the various SQL statements related to reading records from tables and the corresponding MongoDB statements.

NOTE
The 
find()
 method
always includes the 
_id
 field in the returned documents unless specifically excluded through projection.
Some of the SQL queries below may include an 
_id
 field to reflect this, even if the field is not included in the corresponding 
find()
 query.

SQL SELECT StatementsMongoDB 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 peopleWHERE status = "A"


db.people.find(
{ status: "A" }
)


SELECT user_id, status
FROM peopleWHERE status = "A"


db.people.find(
{ status: "A" },
{ user_id: 1, status: 1, _id: 0 }
)


SELECT *
FROM peopleWHERE status != "A"


db.people.find(
{ status: { $ne: "A" } }
)


SELECT *
FROM peopleWHERE status = "A"
AND age = 50


db.people.find(
{ status: "A",
age: 50 }
)


SELECT *
FROM peopleWHERE status = "A"
OR age = 50


db.people.find(
{ $or: [ { status: "A" } ,
{ age: 50 } ] }
)


SELECT *
FROM peopleWHERE age > 25


db.people.find(
{ age: { $gt: 25 } }
)


SELECT *
FROM peopleWHERE age < 25


db.people.find(
{ age: { $lt: 25 } }
)


SELECT *
FROM peopleWHERE age > 25
AND age <= 50


db.people.find(
{ age: { $gt: 25, $lte: 50 } }
)


SELECT *
FROM peopleWHERE user_id like "%bc%"


db.people.find( { user_id: /bc/ } )


-or-

db.people.find( { user_id: { $regex: /bc/ } } )


SELECT *
FROM peopleWHERE user_id like "bc%"


db.people.find( { user_id: /^bc/ } )


-or-

db.people.find( { user_id: { $regex: /^bc/ } } )


SELECT *
FROM peopleWHERE status = "A"
ORDER BY user_id ASC


db.people.find( { status: "A" } ).sort( { user_id: 1 } )


SELECT *
FROM peopleWHERE 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 peopleWHERE 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 peopleLIMIT 1


db.people.findOne()


or

db.people.find().limit(1)


SELECT *
FROM peopleLIMIT 5
SKIP 10


db.people.find().limit(5).skip(10)


EXPLAIN SELECT *
FROM peopleWHERE status = "A"


db.people.find( { status: "A" } ).explain()


For more information, see:
db.collection.find()

db.collection.distinct()

db.collection.findOne()

Query operators: 
$ne
$and
$or
$gt
$lt
$exists
$lte
,
and 
$regex
.
limit()

skip()

explain()

sort()

count()



Update Records

The following table presents the various SQL statements related to updating existing records in tables and the corresponding MongoDB statements.
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 } }
)


For more information, see 
db.collection.updateMany()
$set
$inc
,
and 
$gt
.


Delete Records

The following table presents the various SQL statements related to deleting records from tables and the corresponding MongoDB statements.
SQL Delete StatementsMongoDB deleteMany() Statements
DELETE FROM people
WHERE status = "D"


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


DELETE FROM people


db.people.deleteMany({})


For more information, see 
db.collection.deleteMany()
.


Additional Resources

Transitioning from SQL to MongoDB (Presentation)
Best Practices for Migrating from RDBMS to MongoDB (Webinar)
SQL vs. MongoDB Day 1-2
SQL vs. MongoDB Day 3-5
MongoDB vs. SQL Day 14
MongoDB and MySQL Compared
Quick Reference Cards
MongoDB Database Modernization Consulting Package
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: