MongoDB proporciona un operador $bit para realizar una actualización bit a bit de un campo. Este operador admite operaciones bit a bit xor, bit a bit o y bit a bit y.
Sintaxis:
{ $bit: { <field1>: { <or|and|xor>: <int> } } }
Puntos importantes:
- Use el operador $bit solo con campos de enteros (entero de 32 bits o entero de 64 bits)
- Para especificar un campo en documentos incrustados/anidados o en una array, utilice la notación de puntos.
- Todos los números en el shell mongo son dobles, no enteros. Por lo tanto, debe usar NumberInt() o el constructor NumberLong() para especificar números enteros.
- Puede usar este operador en métodos como update(), findAndModify(), etc., según sus requisitos.
En los siguientes ejemplos, estamos trabajando con:
Base de datos: GeeksforGeeks
Colección: bitexample
Documento: tres documentos que contienen los datos en forma de pares de campo-valor.
Bit a bit O:
En este ejemplo, estamos utilizando el método update() para actualizar el valor del campo numérico del documento (id: g_f_g_2) al resultado (es decir, NumberLong(13) o 1101) de una operación bit a bit o realizada entre el valor actual NumberLong( 5) (es decir, 0101) y NumberInt(9) (es decir, 1001):
db.bitexample.update({_id: "g_f_g_2"}, {$bit: {number: {or: NumberInt(9)}}})
Bit a bit Y:
En este ejemplo, estamos utilizando el método update() para actualizar el valor del campo numérico del documento (id: g_f_g_1) al resultado (es decir, NumberInt(1) o 0001) de una operación bit a bit y realizada entre el valor actual NumberInt( 11) (es decir, 1011) y NumberInt(5) (es decir, 0101):
db.bitexample.update({_id: "g_f_g_1"}, {$bit: {number: {and: NumberInt(5)}}})
XOR bit a bit:
En este ejemplo, estamos utilizando el método update() para actualizar el valor del campo numérico del documento (id: g_f_g_3) al resultado (es decir, NumberLong(10) o 1010) de una operación xor bit a bit realizada entre el valor actual NumberLong( 7) (es decir, 0111) y NumberLong(13) (es decir, 1101):
db.bitexample.update({_id: "g_f_g_3"}, {$bit: {number: {xor: NumberLong(13)}}})
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA