Menu Docs
Página inicial do Docs
/ /

$eq

$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> } }

O operador $eq é equivalente ao 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 <value> for um documento, a ordem dos campos no documento importa.

Se <value> for uma array, o MongoDB corresponde 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 <value> é fixo, como determinada string, a expressão é equivalente a utilizar o operador $eq { field: { $eq: <value> } }.

Se <value> for uma expressão regular, o MongoDB expande a declaração para usar o operador $regex { field: { $regex: <value> } }.

Para obter exemplos, consulte Comportamento de correspondência de 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 usam a coleção inventory:

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" ] }
] )

Este exemplo seleciona todos os documentos da coleção inventory em que 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 seleciona todos os documentos da coleção inventory onde o valor do campo item.name é 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

O exemplo a seguir seleciona todos os documentos na coleção inventory em que 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".

Este exemplo seleciona todos os documentos na coleção inventory onde o array tags é igual ao array especificado ou contém um elemento que é igual ao 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 mostram a diferença entre 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

As strings retornam os mesmos valores, seja usando uma correspondência implícita ou um uso explícito de $eq. As consultas a seguir retornam o mesmo resultado:

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

O resultado é:

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

Uma consulta explícita que usa $eq e uma expressão regular só corresponde a um objeto que também é uma expressão regular. A consulta de exemplo não retorna resultados porque os valores no campo company são cadeias de caracteres.

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

Uma consulta com correspondência implícita a uma expressão regular é equivalente a uma consulta que usa o operador $regex. As seguintes consultas retornam o mesmo resultado:

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

Os resultados são:

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

Voltar

Comparação

Nesta página