Definición
Nuevo en la versión 6.3.
Sintaxis
El operador $bitXor tiene la siguiente sintaxis:
{ $bitXor: [ <expression1>, <expression2>, ... ] }
Comportamiento
Si los operandos incluyen tanto enteros como valores largos, MongoDB extiende la señal del resultado entero calculado y devuelve un valor largo. De lo contrario, si los operadores incluyen solo números enteros o solo long, MongoDB devuelve resultados con el tipo de valor correspondiente.
Nota
Todos los números en mongosh son de tipo double, no enteros. Para especificar enteros en mongosh, utilice el constructor Int32() o Long(). Para obtener más información, consulte Int32 o Long.
Para saber cómo maneja su controlador de MongoDB los valores numéricos, consulte la documentación de su controlador.
Si alguno de los argumentos en el arreglo es de un tipo de datos diferente, como un string, un double o un decimal, MongoDB devuelve un error.
Si el argumento es un arreglo vacío, la operación devuelve Int32(0).
Si alguno de los argumentos en el arreglo es igual a null, la operación devuelve null.
Ejemplo
El ejemplo en esta página utiliza la colección switches:
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) } ] )
La siguiente agregación utiliza el operador $bitXor en la etapa $project:
db.switches.aggregate( [ { $project: { result: { $bitXor: ["$a", "$b"] } } } ])
La operación devuelve los siguientes resultados:
[ { _id: 0, result: 127 }, { _id: 1, result: 1 }, { _id: 2, result: 6 } ]