Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Gráfico de mapeamento SQL para MongoDB

Nesta página

  • Terminologia e conceitos
  • Executáveis
  • Exemplos
  • Leitura adicional

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
Banco de dados
mesa
linha
documento ou documento BSON
coluna
índice
junções de mesa

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

$merge (Disponível a partir do MongoDB 4.2)

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

UNIÃO DE TODOS
transações

transações

Dica

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
Servidor do Banco de Dados
mysqld
oracle
IDS
DB2 Server
Cliente do Banco de Dados
mongosh
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:

Dica

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
Instruçõ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().

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

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
Instruçõ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:

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
Instruçõ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().

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

← Leituras retráteis