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

$bitsAnyClear (operador de predicado da query)

$bitsAnyClear

$bitsAnyClear corresponde a documentos em que qualquer uma das posições de bit fornecidas pela query está limpa (ou0 seja,) field em.

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

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

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

O field valor deve ser numérico ou uma instância BinData $bitsAnyClear . Caso contrário, não corresponderá ao documento atual.

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$bitsAnyClear 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 Os valores agem como bitmasks e são interpretados como se fossem números little-endian sem sinal de comprimento arbitrário. O byte endereçável mais baixo é sempre interpretado como o byte menos significativo. Da mesma forma, o byte endereçável de maior valor no BinData é sempre interpretado como o byte mais significativo.

As queries não podem usar índices para a $bitsAnyClear parte de uma query, embora as outras partes de uma query possam usar índices, se aplicável.

$bitsAnyClear 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.

Os números são assinados estendidos. Por exemplo, considera que a posição de$bitsAnyClear bit 200 está definida para o número -5 negativo, mas a posição de bit 200 está definida para o número +5 positivo.

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

$bitsAnyClear considerará todos os bits fora de x limpos.

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 se o $bitsAnyClear campo a tem a posição de bit 1 ou 5 a posição de bit limpa, em que o bit menos significativo está na 0 posição.

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

A consulta corresponde aos seguintes documentos:

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

A query seguinte utiliza o operador para testar $bitsAnyClear se a o campo tem quaisquer 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: { $bitsAnyClear: 35 } } )

A consulta corresponde aos seguintes documentos:

{ "_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 se o $bitsAnyClear campo a tem algum bit limpo nas posições 4 e 5 (a representação binária BinData(0, "MA==") de 00110000 é).

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

A consulta corresponde aos seguintes documentos:

{ "_id" : 2, "a" : 20, "binaryValueofA" : "00010100" }
{ "_id" : 3, "a" : 20.0, "binaryValueofA" : "00010100" }
{ "_id" : 4, "a" : BinData(0,"Zg=="), "binaryValueofA" : "01100110" }
Avalie esta página