Operador de actualización bit a bit de MongoDB

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *