Docs Menu
Docs Home
/
Manual de base de datos
/

Gráfica de mapeo de SQL a MongoDB

Además de los gráficos que siguen, es posible que desees considerar lo siguiente: Sección de preguntas frecuentes para una selección de preguntas comunes sobre MongoDB.

La siguiente tabla presenta los diversos términos y conceptos de SQL y los correspondientes de MongoDB.

Términos/conceptos de SQL
Términos/conceptos de MongoDB

database

tabla

fila

columna

index

joins de tablas

llave primaria

Especifica cualquier columna única o combinación de columnas como llave primaria.

llave primaria

En MongoDB, la llave primaria se establece automáticamente en el campo _id.

Agregación (p. ej., agrupar por)

Aggregation Pipeline

Consulta la gráfica de mapeo de SQL a agregación.

SELECCIONAR A NEW_TABLE

INSERTAR EN TABLA

UNIR TODO

Transacciones

Transacciones

En muchos escenarios, el modelo de datos desnormalizado (documentos incrustados y arreglos) seguirá siendo óptimo para los datos y casos de uso en lugar de las transacciones multi-documento. Es decir, en muchos escenarios, modelar los datos de forma adecuada minimizará la necesidad de transacciones multi-documento.

La siguiente tabla presenta algunos ejecutables de bases de datos y los ejecutables correspondientes de MongoDB. Esta tabla no está destinada a ser exhaustiva.

MongoDB
MySQL
Oracle
Informix
DB2

Database Server

mysqld

oracle

IDS

DB2 Server

Cliente de base de datos

mysql

sqlplus

DB-Access

DB2 Client

La siguiente tabla presenta las diversas instrucciones SQL y las instrucciones correspondientes de MongoDB. Los ejemplos en la tabla suponen las siguientes condiciones:

  • Los ejemplos de SQL suponen una tabla llamada people.

  • Los ejemplos de MongoDB asumen una colección llamada people que contiene documentos del siguiente prototipo:

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

La siguiente tabla presenta las diversas instrucciones SQL relacionadas con acciones a nivel de tabla y las instrucciones correspondientes de MongoDB.

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

Creado implícitamente en la primera operación de insertOne() o insertMany(). La llave primaria _id se añade automáticamente si no se especifica el campo _id.

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

Sin embargo, también puedes crear explícitamente una colección:

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

Las colecciones no describen ni aplican la estructura de tus documentos; es decir, no hay alteración estructural a nivel de la colección.

Sin embargo, a nivel de documento, las operaciones updateMany() pueden añadir campos a documentos existentes utilizando el operador $set.

db.people.updateMany(
{ },
{ $set: { join_date: new Date() } }
)
ALTER TABLE people
DROP COLUMN join_date

Las colecciones no describen ni aplican la estructura de tus documentos; es decir, no hay alteración estructural a nivel de la colección.

Sin embargo, a nivel de documento, las operaciones de updateMany() pueden remover campos de documentos utilizando el operador $unset.

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

Para obtener más información sobre los métodos y operadores utilizados, consulta:

Tip

La siguiente tabla presenta las diversas instrucciones SQL relacionadas con la inserción de registros en tablas y las correspondientes instrucciones de MongoDB.

Instrucciones SQL INSERT
Instrucciones insertOne() de MongoDB
INSERT INTO people(user_id,
age,
status)
VALUES ("bcd001",
45,
"A")
db.people.insertOne(
{ user_id: "bcd001", age: 45, status: "A" }
)

Para obtener más información, consulta db.collection.insertOne().

La siguiente tabla presenta las diversas instrucciones SQL relacionadas con la lectura de registros de tablas y las correspondientes instrucciones de MongoDB.

Nota

El método find() siempre incluye el campo _id en los documentos devueltos, a menos que se excluya específicamente mediante proyección. Algunas de las queries SQL a continuación pueden incluir un campo _id para reflejar esto, incluso si el campo no está incluido en la query find() correspondiente.

instrucciones SQL SELECT
Instrucciones find() de MongoDB
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 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/ } )

-o-

db.people.find( { user_id: { $regex: /bc/ } } )
SELECT *
FROM people
WHERE user_id like "bc%"
db.people.find( { user_id: /^bc/ } )

-o-

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.aggregate( [ { $group : { _id : "$status" } } ] )

o, para conjuntos de valores distintos que no superen el límite de tamaño de BSON

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

Para obtener más información sobre los métodos y operadores utilizados, consulta

La siguiente tabla presenta las diversas instrucciones SQL relacionadas con la actualización de registros existentes en tablas y las correspondientes instrucciones de MongoDB.

Instrucciones SQL de actualización
Instrucciones de updateMany() de MongoDB
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 } }
)

Para más información sobre el método y los operadores utilizados en los ejemplos, consulta:

La siguiente tabla presenta las diversas instrucciones SQL relacionadas con la eliminación de registros de tablas y las correspondientes instrucciones de MongoDB.

Instrucciones SQL para borrar
Instrucciones deleteMany() de MongoDB
DELETE FROM people
WHERE status = "D"
db.people.deleteMany( { status: "D" } )
DELETE FROM people
db.people.deleteMany({})

Para obtener más información, consulta db.collection.deleteMany().

Volver

Lecturas reintentables

En esta página