Programfiler
Følgende tabell lister programfilene til MySQL/Oracle og de korresponderende programfilene til MongoDB .
| MySQL/Oracle | MongoDB | |
|---|---|---|
| Database Server | mysqld/oracle | mongod |
| Database Klient | mysql/sqlplus | mongo |
Terminologi og Konsepter
Tabellen nedenfor viser ulike SQL-begreper og -konsepter og motsvarende for MongoDB.
| SQL Begreper/Konsepter | MongoDB Begreper/Konsepter |
|---|---|
| database | database |
| tabell | collection |
| rad | dokument eller BSON dokument |
| kolonne | felt |
| indeks | indeks |
| table joins | Innebygde dokumenter og lenker |
| primary key Velg en unik kolonne eller kolonne-kombinasjon som primærnøkkel. |
primary key I MongoDB blir primærnøkkelen automatisk satt til _id-feltet. |
| aggregering (f.eks. group by) | aggregeringsrammeverk Jfr. SQL to Aggregation Framework Mapping Chart. |
Eksempler
Tabellen nedenfor viser ulike SQL-setninger og tilsvarende MongoDB-setninger. Eksemplene i tabellen bygger på følgende forutsetninger:
- SQL-eksemplene forutsetter en tabell kalt: users.
- MongoDB-eksemplene forutsetter en collection kalt: users, som inneholder dokumenter basert på følgende lest:
{ _id: ObjectID("509a8fb2f3f4948bd2f983a0"), user_id: "abc123", age: 55, status: 'A' }
Create og Alter (Opprette og endre)
Følgende tabell presenterer ulike SQL-setninger med tilsvarende MongoDB-setninger relatert til handlinger på tabell-nivå.
| SQL Skjema-setninger | MongoDB Skjema-setninger | Referanse |
|---|---|---|
CREATE TABLE users (
id MEDIUMINT NOT NULL
AUTO_INCREMENT,
user_id Varchar(30),
age Number,
status char(1),
PRIMARY KEY (id)
)
|
En collection bli automatisk opprettet ved første insert- operasjon. Primærnøkkelen _id blir lagt til automatisk hvis _id -feltet ikke er spesifisert.
db.users.insert( {
user_id: "abc123",
age: 55,
status: "A"
} )
Men man kan også eksplisitt opprette en collection: db.createCollection("users")
|
Se insert() og createCollection() for mer informasjon. |
ALTER TABLE users ADD join_date DATETIME |
Collections verken beskriver eller bestemmer strukturen til de tilhørende dokumentene. Se Schema Design wiki for mer informasjon. | Se update() og $set for mer informasjon om å endre struktur på dokumenter i en collection. |
ALTER TABLE users DROP COLUMN join_date |
Collections verken beskriver eller bestemmer strukturen til de tilhørende dokumentene. Se Schema Design wiki for mer informasjon. | Se update() og $set for mer informasjon om å endre struktur på dokumenter i en collection. |
CREATE INDEX idx_user_id_asc ON users(user_id) |
db.users.ensureIndex( { user_id: 1 } )
|
Se ensureIndex() og indexes for mer informasjon. |
CREATE INDEX
idx_user_id_asc_age_desc
ON users(user_id, age DESC)
|
db.users.ensureIndex( { user_id: 1, age: -1 } )
|
Se ensureIndex() og indexes for mer informasjon. |
DROP TABLE users |
db.users.drop() |
Se drop() for mer informasjon. |
Insert
Følgende tabell viser ulike SQL-setninger relatert til å sette inn rader i tabeller, med tilsvarende MongoDB-setninger.
| SQL INSERT | MongoDB insert() | Referanser |
|---|---|---|
INSERT INTO users(user_id,
age,
status)
VALUES ("bcd001",
45,
"A")
|
db.users.insert( {
user_id: "bcd001",
age: 45,
status: "A"
} )
|
Se insert() for mer informasjon. |
Select
Følgende tabell visert ulike SQL-setninger relatert til å lese tabellrader, med tilsavrende MongoDB-setninger.
| SQL SELECT | MongoDB find() | Referanse |
|---|---|---|
SELECT * FROM users |
db.users.find() |
Se find() for mer informasjon. |
SELECT id, user_id, status FROM users |
db.users.find(
{ },
{ user_id: 1, status: 1 }
)
|
Se find() for mer informasjon. |
SELECT user_id, status FROM users |
db.users.find(
{ },
{ user_id: 1, status: 1, _id: 0 }
)
|
Se find() for mer informasjon. |
SELECT * FROM users WHERE status = "A" |
db.users.find(
{ status: "A" }
)
|
Se find() for mer informasjon. |
SELECT user_id, status FROM users WHERE status = "A" |
db.users.find(
{ status: "A" },
{ user_id: 1, status: 1, _id: 0 }
)
|
Se find() for mer informasjon. |
SELECT * FROM users WHERE status != "A" |
db.users.find(
{ status: { $ne: "A" } }
)
|
Se find() og $ne for mer informasjon. |
SELECT * FROM users WHERE status = "A" AND age = 50 |
db.users.find(
{ status: "A",
age: 50 }
)
|
Se find() og $and for mer informasjon. |
SELECT * FROM users WHERE status = "A" OR age = 50 |
db.users.find(
{ $or: [ { status: "A" } ,
{ age: 50 } ] }
)
|
Se find() og $or for mer informasjon. |
SELECT * FROM users WHERE age > 25 |
db.users.find(
{ age: { $gt: 25 } }
)
|
Se find() og $gt for mer informasjon. |
SELECT * FROM users WHERE age < 25 |
db.users.find(
{ age: { $lt: 25 } }
)
|
Se find() og $lt for mer informasjon. |
SELECT * FROM users WHERE age > 25 AND age <= 50 |
db.users.find(
{ age: { $gt: 25, $lte: 50 } }
)
|
Se find(), $gt, og $lte for mer informasjon. |
SELECT * FROM users WHERE user_id like "%bc%" |
db.users.find(
{ user_id: /bc/ }
)
|
Se find() og $regex for mer informasjon. |
SELECT * FROM users WHERE user_id like "bc%" |
db.users.find(
{ user_id: /^bc/ }
)
|
Se find() og $regex for mer informasjon. |
SELECT * FROM users WHERE status = "A" ORDER BY user_id ASC |
db.users.find( { status: "A" } ).sort( { user_id: 1 } )
|
Se find() og sort() for mer informasjon. |
SELECT * FROM users WHERE status = "A" ORDER BY user_id DESC |
db.users.find( { status: "A" } ).sort( { user_id: -1 } )
|
Se find() og sort() for mer informasjon. |
SELECT COUNT(*) FROM users |
db.users.count() or db.users.find().count() |
Se find() og count() for mer informasjon. |
SELECT COUNT(user_id) FROM users |
db.users.count( { user_id: { $exists: true } } )
or db.users.find( { user_id: { $exists: true } } ).count()
|
Se find(), count(), og $exists for mer informasjon. |
SELECT COUNT(*) FROM users WHERE age > 30 |
db.users.count( { age: { $gt: 30 } } )
or db.users.find( { age: { $gt: 30 } } ).count()
|
Se find(), count(), og $gt for mer informasjon. |
SELECT DISTINCT(status) FROM users |
db.users.distinct( "status" ) |
Se find() og distinct() for mer informasjon. |
SELECT * FROM users LIMIT 1 |
db.users.findOne() or db.users.find().limit(1) |
Se find(), findOne(), og limit() for mer informasjon. |
SELECT * FROM users LIMIT 5 SKIP 10 |
db.users.find().limit(5).skip(10) |
Se find(), limit(), og skip() for mer informasjon. |
EXPLAIN SELECT * FROM users WHERE status = "A" |
db.users.find( { status: "A" } ).explain()
|
Se find() og explain() for mer informasjon. |
Update
Følgende tabell viser ulike SQL-setninger relatert til å oppdatere eksisterende tabellrader, med tilsvarende MongoDB-setninger.
| SQL Update | MongoDB update() | Referanse |
|---|---|---|
UPDATE users SET status = "C" WHERE age > 25 |
db.users.update(
{ age: { $gt: 25 } },
{ $set: { status: "C" } },
{ multi: true }
)
|
Se update(), $gt, og $set for mer informasjon. |
UPDATE users SET age = age + 3 WHERE status = "A" |
db.users.update(
{ status: "A" } ,
{ $inc: { age: 3 } },
{ multi: true }
)
|
Se update(), $inc, og $set for mer informasjon. |
Slette Rader
Følgende tabell viser ulike SQL-setninger relateer til å slette tabellrader, med tilsvarende MongoDB-setninger.
| SQL Delete | MongoDB remove() | Referanse |
|---|---|---|
DELETE FROM users WHERE status = "D" |
db.users.remove( { status: "D" } )
|
Se remove() for mer informasjon. |
DELETE FROM users |
db.users.remove( ) |
Se remove() for mer informasjon. |