Docs Menu
Docs Home
/ /
Consulta bit a bit

$bitsAllSet

$bitsAllSet

$bitsAllSet coincide con documentos donde todas las posiciones de bits dadas por la consulta están establecidas (es1 decir,) field en.

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

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

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

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

Máscara de bits numérica
Puede proporcionar una máscara de bits numérica para compararla con el campo del operando. La máscara de bits debe ser un entero con signo 64de bits no negativo. De lo contrario, devuelve un$bitsAllSet error.
BinData Bitmask
También puede utilizar una instancia BinData arbitrariamente grande como máscara de bits.
Lista de posiciones
Al consultar una lista de posiciones de bit, cada <position> debe ser un entero positivo. Las posiciones de bit comienzan en 0 a partir del bit menos significativo. Por ejemplo, el número decimal 254 tendría las siguientes posiciones de bit:
Valor de bit
1
1
1
1
1
1
1
0

Posición

7

6

5

4

3

2

1

0

El endianismo de su sistema depende de la arquitectura de su máquina. Los números en datos BSON siempre se almacenan como little-endian; si su sistema es big-endian, significa que los datos numéricos se convierten entre big y little-endian.

En el contexto de los operadores de expresión de coincidencia de prueba de bits:

BinData Los valores actúan como máscaras de bitsy se interpretan como si fueran números little-endian sin signo de longitud arbitraria. El byte de menor direccionamiento siempre se interpreta como el byte menos significativo. De igual manera, el byte de mayor direccionamiento en BinData siempre se interpreta como el byte más significativo.

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

$bitsAllSet No se coincidirán valores numéricos que no se puedan representar como un entero con signo de 64bits. Esto puede ocurrir si un valor es demasiado grande o demasiado pequeño para caber en un entero con signo de 64bits, o si tiene un componente fraccionario.

Los números se extienden por signo. Por ejemplo, considera que la posición de bit$bitsAllSet está 200 activada para el número -5 negativo, pero que la posición de bit 200 está libre para el número +5 positivo.

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

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

$bitsAllSet considerará que todos los bits fuera de x están limpios.

Los siguientes ejemplos utilizarán una colección con los siguientes documentos:

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

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

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

La consulta coincide con los siguientes documentos:

{ "_id" : 1, "a" : 54, "binaryValueofA" : "00110110" }
{ "_id" : 4, "a" : BinData(0,"Zg=="), "binaryValueofA" : "01100110" }

La siguiente consulta utiliza el operador para probar $bitsAllSet si a el campo tiene bits establecidos en las 1 posiciones, 4 y 5 (la representación binaria de la máscara de bits 50 00110010es).

db.collection.find( { a: { $bitsAllSet: 50 } } )

La consulta coincide con el siguiente documento:

{ "_id" : 1, "a" : 54, "binaryValueofA" : "00110110" }

La siguiente consulta utiliza el operador para probar $bitsAllSet si a el campo tiene bits establecidos en las posiciones 4 y 5 (la representación binaria BinData(0, "MA==") de 00110000 es).

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

La consulta coincide con el siguiente documento:

{ _id: 1, a: 54, binaryValueofA: "00110110" }

Volver

$bitsAllClear

En esta página