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

$bitsAllClear (operador de predicado da query)

$bitsAllClear

$bitsAllClear corresponde a documentos em que todas as posições de bit fornecidas pela query estão limpas (ou0 seja,) field em.

{ <field>: { $bitsAllClear: <numeric bitmask> } }

{ <field>: { $bitsAllClear: < BinData bitmask> } }

{ <field>: { $bitsAllClear: [ <position1>, <position2>, ... ] } }

The field value must be either numeric or a BinData instance. Otherwise, $bitsAllClear will not match the current document.

Máscara de bits numérica

Você pode fornecer uma máscara de bits numérica para ser correspondida ao campo operando. A máscara de bits deve ser um 64número inteiro assinado de bits não negativo. Caso contrário, retorna um$bitsAllClear erro.

Máscara de bits BinData

Você também pode usar uma instância deBinData arbitrariamente grande como uma máscara de bits.

Lista de posições

Ao consultar uma lista de posições de bits, cada <position> deve ser um número inteiro não negativo. As posições dos bits começam em 0 a partir do bit menos significativo. Por exemplo, o número decimal 254 teria as seguintes posições de bits:
Valor de bits
1
1
1
1
1
1
1
0

Posição

7

6

5

4

3

2

1

0

A endianidade do seu sistema depende da arquitetura da sua máquina. Os números nos dados BSON são sempre armazenados como little-endian, se o seu sistema for big-endian , isso significa que os dados numéricos são convertidos entre big e little endian.

No contexto dos operadores de expressão de correspondência de teste de bit:

BinData values act as bitmasks and are interpreted as though they are arbitrary-length unsigned little-endian numbers. The lowest-addressable byte is always interpreted as the least significant byte. Similarly, the highest-addressable byte in the BinData is always interpreted as the most significant byte.

Queries cannot use indexes for the $bitsAllClear portion of a query, although the other portions of a query can use indexes, if applicable.

$bitsAllClear não corresponderá a valores numéricos que não possam ser representados como um número inteiro de 64 bits assinado. Esse pode ser o caso se um valor for muito grande ou muito pequeno para caber em um inteiro de 64 bits assinado ou se tiver um componente fracionário.

Numbers are sign extended. For example, $bitsAllClear considers bit position 200 to be set for the negative number -5, but bit position 200 to be clear for the positive number +5.

Por outro lado, instâncias BinData são estendidas a zero. Por exemplo, dado o seguinte documento:

db.collection.insertOne({ x: BinData(0, "ww=="), binaryValueofA: "11000011" })

$bitsAllClear will consider all bits outside of x to be clear.

Os exemplos a seguir utilizarão uma coleção com os seguintes documentos:

db.collection.insertMany([
{ _id: 1, a: 54, binaryValueofA: "00110110" },
{ _id: 2, a: 20, binaryValueofA: "00010100" },
{ _id: 3, a: 20.0, binaryValueofA: "00010100" },
{ _id: 4, a: BinData(0, "Zg=="), binaryValueofA: "01100110" }
])

A query a seguir usa o operador para testar $bitsAllClear se a o campo tem bits livres na 1 posição e 5 na posição, onde o bit menos significativo está na 0 posição.

db.collection.find( { a: { $bitsAllClear: [ 1, 5 ] } } )

A consulta corresponde aos seguintes documentos:

{ "_id" : 2, "a" : 20, "binaryValueofA" : "00010100" }
{ "_id" : 3, "a" : 20, "binaryValueofA" : "00010100" }

A query seguinte utiliza o operador para testar $bitsAllClear se a o campo tem bits livres nas 0 posições, 1 e 5 (a representação binária da máscara de bits 35 00100011é).

db.collection.find( { a: { $bitsAllClear: 35 } } )

A consulta corresponde aos seguintes documentos:

{ "_id" : 2, "a" : 20, "binaryValueofA" : "00010100" }
{ "_id" : 3, "a" : 20, "binaryValueofA" : "00010100" }

A seguinte query utiliza o $bitsAllClear operador:

db.collection.find( { a: { $bitsAllClear: BinData(0, "IA==") } } )

A query:

  • Especifica 0 como o primeiro valor para BinData, o que indica que IA== deve ser interpretado como binário. O valor de base-64 IA== em binário é 00100000, que tem 1 na posição 5.

  • Usa para retornar documentos onde $bitsAllClear o a campo tem um bit limpo 0 na posição 5 do valor binário.

A consulta retorna os seguintes documentos:

{ "_id" : 2, "a" : 20, "binaryValueofA" : "00010100" }
{ "_id" : 3, "a" : 20, "binaryValueofA" : "00010100" }
Avalie esta página