Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / /

$eq

Nesta página

  • Compatibilidade
  • Sintaxe
  • Comportamento
  • Exemplos
$eq

Especifica a condição de igualdade. O operador $eq corresponde a documentos em que o valor de um campo é igual ao valor especificado.

Você pode utilizar o $eq para implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O operador $eq tem o seguinte formato:

{ <field>: { $eq: <value> } }

Especificar o operador $eq é equivalente a usar o formato { field: <value> }, exceto quando <value> é uma expressão regular. Veja abaixo alguns exemplos.

Para comparação de diferentes valores dos tipos de BSON, consulte a ordem de comparação de BSON especificada.

Se o <value> especificado for um documento, a ordem dos campos no documento será importante.

Se o <value> especificado for uma array, o MongoDB corresponderá a documentos em que <field> corresponda exatamente à array ou <field> contenha um elemento que corresponda exatamente à array. A ordem dos elementos é importante. Para obter um exemplo, consulte Equivale a um valor de array.

A expressão { field: <value> } especifica implicitamente uma correspondência no <value>. O MongoDB traduz a correspondência implícita para uma forma mais explícita.

Quando o <value> é fixo, como determinada string, a expressão é equivalente a utilizar o operador $eq { field: { $eq: <value> } }.

Se <value> for uma expressão regular, a declaração será expandida utilizando o operador $regex { field: { $regex: <value> } }.

Para ver exemplos que ilustram esse comportamento, consulte Comportamento de correspondência Regex.

Sempre use o formato explícito { field: { $eq: <value> } } com entrada fornecida pelo usuário para evitar problemas com query formadas de forma maliciosa.

Os exemplos a seguir comparam a collection inventory com os seguintes documentos:

db.inventory.insertMany( [
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] },
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] },
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
] )

O exemplo a seguir faz uma query da collection inventory para selecionar todos os documentos onde o valor do campo qty é igual a 20:

db.inventory.find( { qty: { $eq: 20 } } )

A query é equivalente a:

db.inventory.find( { qty: 20 } )

Ambas as queries correspondem aos seguintes documentos:

[
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
]

O exemplo a seguir faz uma query da collection inventory para selecionar todos os documentos onde o valor do campo name no documento item é igual a "ab". Para especificar uma condição em um campo em um documento incorporado, use a notação de ponto.

db.inventory.find( { "item.name": { $eq: "ab" } } )

A query é equivalente a:

db.inventory.find( { "item.name": "ab" } )

Ambas as queries correspondem ao seguinte documento:

[ { _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] } ]

Dica

Veja também:

O exemplo a seguir faz uma query da collection inventory para selecionar todos os documentos onde a array tags contém um elemento com o valor "B" [1]:

db.inventory.find( { tags: { $eq: "B" } } )

A query é equivalente a:

db.inventory.find( { tags: "B" } )

Ambas as queries correspondem aos seguintes documentos:

[
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] },
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
]
[1] A query também corresponderá aos documentos onde o valor do campo tags é a string "B".

O exemplo a seguir faz uma query da collection inventory para selecionar todos os documentos em que a array tags é exatamente igual à array especificada ou a array tags contém um elemento igual à array [ "A", "B" ].

db.inventory.find( { tags: { $eq: [ "A", "B" ] } } )

A query é equivalente a:

db.inventory.find( { tags: [ "A", "B" ] } )

Ambas as queries correspondem aos seguintes documentos:

[
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
]

Os exemplos a seguir demonstram as diferenças de comportamento entre a correspondência implícita e explícita de expressões regulares. Considere uma collection com estes documentos:

db.companies.insertMany( [
{ _id: 001, company: "MongoDB" },
{ _id: 002, company: "MongoDB2" }
] )
correspondência $eq em uma string

Uma string expande para retornar os mesmos valores no caso de uma correspondência implícita ou um uso explícito do $eq. Ambas as queries:

db.collection.find( { company: "MongoDB" }, {_id: 0 })
db.collection.find( { company: { $eq: "MongoDB" } }, {_id: 0 } )

retorna o seguinte resultado:

[ { company: "MongoDB" } ]
correspondência $eq em uma expressão regular

Uma query explícita utilizando $eq e uma expressão regular somente corresponderá a um objeto que também é uma expressão regular. A query de exemplo não retornará nada, pois os valores no campo company são strings.

db.companies.find( { company: { $eq: /MongoDB/ } }, {_id: 0 } )
Correspondências de expressões regulares

Uma query com uma correspondência implícita com uma expressão regular é equivalente a fazer uma query com o operador $regex. Ambas as queries:

db.companies.find( { company: /MongoDB/ }, {_id: 0 })
db.companies.find( { company: { $regex: /MongoDB/ } }, {_id: 0 } )

retornam os mesmos resultados:

[
{ company: "MongoDB" },
{ company: "MongoDB2" }
]

Voltar

Consulta de comparação