Os colchetes de tipo é um filtro implícito que o MongoDB aplica aos predicados da query: uma comparação em um determinado tipo de BSON corresponde apenas a valores desse tipo. Por exemplo, { a: { $gt: 0 } } significa "a é um número e a é maior que 0".
Quais operadores digitam suporte
Os operadores de desigualdade ($gt, $gte, $lt e $lte) usam colchetes de tipo.
Negações ($ne e $nin) não usam colchetes de tipo. Elas correspondem a valores de qualquer tipo. Por exemplo, { a: { $ne: 2 } } também corresponde a documentos em que a é uma string ou um objeto, além do tipo numérico na comparação.
Digite colchetes para comparações com números
BSON tem vários tipos numéricos: int, long, double e decimal. O MongoDB os trata 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 valores a do tipo int, long, double ou decimal.
Type Bracketing e Traversal Implícita de Array
Os colchetes de tipo também se aplicam quando uma comparação atravessa implicitamente uma array. Se o campo de destino for uma array, a comparação corresponderá a documentos em que pelo menos um elemento satisfaça a comparação e seja 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: [ "red", "blue" ] }.
Exemplo
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 query 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.