Definición
Nuevo en la versión 6.3.
Sintaxis
La $bitAnd el operador tiene la siguiente sintaxis:
{ $bitAnd: [ <expression1>, <expression2>, ... ] }
Comportamiento
Si los operandos incluyen enteros y valores long, MongoDB extiende el resultado entero calculado y devuelve un valor long. De lo contrario, si los operandos incluyen solo enteros o long, MongoDB devuelve resultados con el tipo de valor correspondiente.
Nota
Todos los números en mongosh son dobles, no enteros. Para especificar números enteros en mongosh, utilice el Int32() o el Long() constructor. Para obtener más información, consulta Int32 o Long.
Para aprender cómo tu driver de MongoDB gestiona valores numéricos, consulta la documentación del driver.
Si alguno de los argumentos de la matriz es de un tipo de datos diferente, como una cadena, un doble o un decimal, MongoDB devuelve un error.
Si el argumento es una matriz vacía, la operación devuelve Int32(-1).
Si alguno de los operandos equivale a null, la operación devuelve null.
Ejemplos
Los ejemplos de esta página utilizan la colección switches, que contiene los siguientes documentos:
db.switches.insertMany( [ { _id: 0, a: Int32(0), b: Int32(127) }, { _id: 1, a: Int32(2), b: Int32(3) }, { _id: 2, a: Int32(3), b: Int32(5) } ] )
Bitwise AND con dos enteros
La siguiente agregación utiliza el operador $bitAnd en el
$project escenario:
db.switches.aggregate( [ { $project: { result: { $bitAnd: [ "$a", "$b" ] } } } ])
La operación devuelve los siguientes resultados:
[ { _id: 0, result: 0 } { _id: 1, result: 2 } { _id: 2, result: 1 } ]
Bit a bit AND con un Long y Integer
La siguiente agregación utiliza el operador $bitAnd $project en la etapa:
db.switches.aggregate( [ { $project: { result: { $bitAnd: [ "$a", Long("63") ] } } } ])
La operación devuelve los siguientes resultados:
[ { _id: 0, result: Long("0") } { _id: 1, result: Long("2") } { _id: 2, result: Long("3") } ]