Menu Docs

Gráfico de mapeamento SQL para MongoDB

Além dos gráficos a seguir, você pode considerar a seção Perguntas frequentes para uma seleção de perguntas frequentes sobre MongoDB.

A tabela a seguir apresenta as diversas terminologias e conceitos SQL e a terminologia e conceitos correspondentes do MongoDB.

Termos/conceitos SQL
Termos/Conceitos do MongoDB

database

mesa

linha

documento ou documento BSON

coluna

index

junções de mesa

$lookup, documentos incorporados

chave primária

Especifique qualquer combinação de coluna ou coluna exclusiva como chave primária.

chave primária

No MongoDB, a chave primária é definida automaticamente para o campo _id.

agregação (por exemplo, agrupar por)

aggregation pipeline

Consulte o Gráfico de mapeamento SQL para agregação.

SELECIONAR EM NEW_TABLE

MESCLAR NA TABELA

UNION ALL

transações

transações

Em muitos cenários, o modelo de dados desnormalizado (documentos incorporados e arrays) continuará a ser ideal para seus dados e casos de uso, em vez de transações com vários documentos. Ou seja, em muitos cenários, a modelagem adequada de seus dados minimizará a necessidade de transações com vários documentos.

A tabela a seguir apresenta alguns executáveis do banco de dados e os executáveis MongoDB correspondentes. Esta tabela não se destina a ser exaustiva.

MongoDB
MySQL
Oráculo
Informix
DB2

Database Server

mysqld

oracle

IDS

DB2 Server

Cliente do Banco de Dados

mysql

sqlplus

DB-Access

DB2 Client

A tabela a seguir apresenta as várias declarações SQL e as declarações MongoDB correspondentes. Os exemplos na tabela pressupõem as seguintes condições:

  • Os exemplos SQL assumem uma tabela denominada people.

  • Os exemplos do MongoDB assumem uma coleção denominada people que contém documentos do seguinte protótipo:

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

A tabela a seguir apresenta as várias instruções SQL relacionadas à ação em nível de tabela e às instruções do MongoDB correspondentes.

Instruções de esquema SQL
Declarações de esquema do MongoDB
CREATE TABLE people (
id MEDIUMINT NOT NULL
AUTO_INCREMENT,
user_id Varchar(30),
age Number,
status char(1),
PRIMARY KEY (id)
)

Implicitamente criado na primeira operação do insertOne() ou insertMany(). A chave primária _id é adicionada automaticamente se o campo _id não for especificado.

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

No entanto, você também pode criar explicitamente uma coleção:

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

As coleções não descrevem nem impõem a estrutura de seus documents, ou seja, não há alteração estrutural no level da coleção.

No entanto, no nível do documento, as operações updateMany() podem adicionar campos a documentos existentes usando o operador $set.

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

As coleções não descrevem nem impõem a estrutura de seus documents, ou seja, não há alteração estrutural no level da coleção.

No entanto, no nível do documento, as operações de updateMany() podem remover campos de documentos usando o 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 obter mais informações sobre os métodos e operadores usados, consulte:

Veja também:

A tabela a seguir apresenta as várias instruções SQL relacionadas à inserção de registros em tabelas e as instruções MongoDB correspondentes.

Declarações de INSERT SQL
Declarações insertOne() do MongoDB
INSERT INTO people(user_id,
age,
status)
VALUES ("bcd001",
45,
"A")
db.people.insertOne(
{ user_id: "bcd001", age: 45, status: "A" }
)

Para mais informações, consulte db.collection.insertOne().

Veja também:

A tabela a seguir apresenta as várias instruções SQL relacionadas à leitura de registros de tabelas e as instruções MongoDB correspondentes.

Observação

O método find() sempre inclui o campo _id nos documentos retornados, a menos que seja especificamente excluído por meio de projeção. Algumas das SQL queries abaixo podem incluir um campo _id para refletir isso, mesmo que o campo não esteja incluído na query find() correspondente.

Instruções SELECT SQL
Declarações find() do 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/ } )

-ou-

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

-ou-

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

ou

db.people.find().count()
SELECT COUNT(user_id)
FROM people
db.people.count( { user_id: { $exists: true } } )

ou

db.people.find( { user_id: { $exists: true } } ).count()
SELECT COUNT(*)
FROM people
WHERE age > 30
db.people.count( { age: { $gt: 30 } } )

ou

db.people.find( { age: { $gt: 30 } } ).count()
SELECT DISTINCT(status)
FROM people
db.people.aggregate( [ { $group : { _id : "$status" } } ] )

ou, para conjuntos de valores distintos que não excedem o limite de tamanho JSON

db.people.distinct( "status" )
SELECT *
FROM people
LIMIT 1
db.people.findOne()

ou

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 obter mais informações sobre os métodos e operadores usados, consulte

Veja também:

A tabela a seguir apresenta as diversas instruções SQL relacionadas à atualização de registros existentes em tabelas e as instruções correspondentes do MongoDB.

Declarações de atualização SQL
Declarações updateMany() do 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 obter mais informações sobre o método e operadores usados nos exemplos, consulte:

Veja também:

A tabela a seguir apresenta as várias instruções SQL relacionadas à exclusão de registros de tabelas e as instruções MongoDB correspondentes.

Instruções SQL Delete
Declarações deleteMany() do MongoDB
DELETE FROM people
WHERE status = "D"
db.people.deleteMany( { status: "D" } )
DELETE FROM people
db.people.deleteMany({})

Para mais informações, consulte db.collection.deleteMany().

Veja também:

Se você estiver considerando migrar seu aplicativo SQL para o MongoDB, baixe o Guia de modernização de aplicativos do MongoDB.

O download inclui os seguintes recursos:

  • Apresentação sobre a metodologia de modelagem de dados com o MongoDB

  • Artigo técnico que aborda as melhores práticas e considerações para migrar de um modelo de dados SGBD para o MongoDB

  • Referenciar o esquema do MongoDB com seu equivalente em SGBD

  • Scorecard de modernização de aplicativos