Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$bitsAllClear (operator del predicado de query)

$bitsAllClear

$bitsAllClear coincide con documentos donde todas las posiciones de bits dadas por la consulta están libres (es decir, 0) en field.

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

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

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

El valor field debe ser numérico o una instancia de BinData. De lo contrario, $bitsAllClear no coincidirá con el documento actual.

Máscara de bits numérica

Puede proporcionar una máscara de bits numérica que se comparará con el campo del operando. La máscara de bits debe ser un entero con signo no negativo de 64 bits. De lo contrario, $bitsAllClear devuelve un error.

BinData Bitmask

También puedes usar una instancia BinData arbitrariamente grande como máscara de bits.

Lista de cargos

Si se consulta una lista de posiciones de bits, cada <position> debe ser un número entero no negativo. Las posiciones de bits comienzan en 0 desde el bit menos significativo. Por ejemplo, el número decimal 254 tendría las siguientes posiciones de bits:
Valor de bit
1
1
1
1
1
1
1
0

Posición

7

6

5

4

3

2

1

0

La endianidad de tu sistema depende de la arquitectura de tu equipo. Los números en los datos BSON siempre se almacenan como little-endian, y si tu sistema es big-endian esto significa que los datos numéricos se convierten entre big y little endian.

En el contexto de los operadores de expresiones de coincidencia de prueba de bits:

Los valoresBinData actúan como máscaras de bits y se interpretan como si fueran números sin signo little-endian de longitud arbitraria. El byte direccionable más bajo siempre se interpreta como el byte menos significativo. De manera similar, el byte direccionable más alto en BinData siempre se interpreta como el byte más significativo.

Las consultas no pueden usar índices para la parte $bitsAllClear de una consulta, aunque las otras partes de una consulta sí pueden usar índices, si corresponde.

$bitsAllClear no coincidirán con valores numéricos que no puedan ser representados como un entero de 64 bits con signo. Este puede ser el caso si un valor es demasiado grande o demasiado pequeño para caber en un entero con signo de 64 bits, o si tiene un componente fraccionario.

Los números se extienden con signo. Por ejemplo, $bitsAllClear considera que la posición del bit 200 está activada para el número negativo -5, pero que la posición del bit 200 está desactivada para el número positivo +5.

En cambio, las instancias de BinData tienen una extensión cero. Por ejemplo, dado el siguiente documento:

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

$bitsAllClear considerará que todos los bits fuera de x están libres de ruido.

Los siguientes ejemplos usarán una colección con los siguientes 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" }
])

La siguiente consulta utiliza el operador $bitsAllClear para comprobar si el campo a tiene bits libres en la posición 1 y en la posición 5, donde el bit menos significativo es la posición 0.

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

La query coincide con los siguientes documentos:

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

La siguiente consulta utiliza el operador $bitsAllClear para comprobar si el campo a tiene bits desactivados en las posiciones 0, 1 y 5 (la representación binaria de la máscara de bits 35 es 00100011).

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

La query coincide con los siguientes documentos:

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

La siguiente consulta utiliza el operador $bitsAllClear:

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

La query:

  • Especifica 0 como el primer valor de BinData, lo que indica que IA== debe interpretarse como binario. El valor en base 64 IA== en binario es 00100000, que tiene 1 en la posición 5.

  • Utiliza $bitsAllClear para devolver documentos donde el campo a tiene un bit 0 en blanco en la posición 5 del valor binario.

La query devuelve los siguientes documentos:

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

En esta página