Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Agrupamento de tipos em predicados de query

O bracketing de tipo é um filtro implícito que o MongoDB aplica aos predicados de query: uma comparação em um determinado tipo BSON corresponde apenas a valores desse tipo. Por exemplo, { a: { $gt: 0 } } significa "a é um número e a é maior que 0".

Os operador de desigualdade ($gt, $gte, $lt e $lte) usam colchetes de tipo.

As negações ($ne e $nin) não usam colchetes de tipo. Eles correspondem a valores de qualquer tipo. Por exemplo, { a: { $ne: 2 } } também corresponde a documentos onde a é uma string ou um objeto, além do tipo numérico na comparação.

O BSON possui vários tipos numéricos: int, long, double e decimal. O MongoDB trata esses valores como equivalentes para comparação, portanto, uma comparação com um número corresponde a valores de qualquer tipo numérico.

Por exemplo, { a: { $gt: 0 } } corresponde a a valores do tipo int, long, double ou decimal.

O agrupamento de tipos também se aplica quando uma comparação percorre um array implicitamente. Se o campo de destino for um array, a comparação corresponderá aos documentos em que pelo menos um elemento satisfaz a comparação e é do mesmo tipo que o operando.

Por exemplo, { a: { $gt: 3 } } corresponde a { a: [ 1, 2, 3, 4 ] } e { a: [ "red", 4, "blue" ] }, mas não a { a: [ "red", "blue" ] }.

Considere a seguinte coleção:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "apricots", "qty": 3 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }

A consulta a seguir usa $gt para retornar documentos em que o valor de qty é maior que 4:

db.inventory.find( { qty: { $gt: 4 } } )
[
{
_id: 'apples',
qty: 5
},
{
_id: 'bananas',
qty: 7
}
]

O documento com _id igual a "apricots" não é retornado porque seu valor de qty, 3, não é maior que 4.

O documento com _id igual a "avocados" não é retornado porque seu valor qty é do tipo string, enquanto o operando $gt é do tipo integer.

O documento com _id igual a "oranges" não é retornado porque seu valor de qty é do tipo object.

Dica

Para impor tipos de dados em uma coleção, use Validação de esquema.