Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$bit (operador de actualización)

$bit

La El $bit operador realiza una actualización bit a bit de un campo. El operador admite and bit a bit, or bit a bit y xor bit a bit (es decir, operaciones (OEX) exclusivas. Para especificar una expresión $bit de operador, usa el siguiente prototipo:

{ $bit: { <field>: { <and|or|xor>: <int> } } }

Utiliza este operador únicamente con campos enteros (ya sean enteros de 32 bits o de 64 bits).

Para especificar un <field> en un documento incrustado o en un arreglo, utiliza notación de puntos.

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.

A partir de MongoDB 5.0, mongod ya no genera un error cuando utiliza un operador de actualización como $bit con una expresión de operando vacía ( { } ). Una actualización vacía no produce cambios y no genera ninguna entrada en el oplog (lo que significa que la operación es una “no-op").

A partir de MongoDB 5.0, los operadores de actualización procesan los campos de documentos con nombres basados en cadenas en orden lexicográfico. Los campos con nombres numéricos se procesan en orden numérico. Consulta Comportamiento del operador de actualización para obtener más información.

Los siguientes ejemplos utilizan la colección switches:

db.switches.insertMany( [
{ _id: 1, expdata: Int32(13) },
{ _id: 2, expdata: Int32(3) },
{ _id: 3, expdata: Int32(1) }
] )

Utiliza un operador bit a bit and en la operación updateOne() para actualizar expdata.

db.switches.updateOne(
{ _id: 1 },
{ $bit: { expdata: { and: Int32( 10 ) } } }
)

La operación and bit a bit:

  • obtiene el valor bit a bit de expdata

  • utiliza and para aplicar el valor bit a bit de Int32(10)

  • actualiza expdata con el resultado, 1000

1101 // expdata
1010 // Int32(10)
----
1000

El binario 1000 equivale a Int32(8). El comando db.switches.find( { _id: 1 } ) devuelve el siguiente documento:

{ "_id" : 1, "expdata" : 8 }

Utiliza un operador bit a bit or en la operación updateOne() para actualizar expdata.

db.switches.updateOne(
{ _id: 2 },
{ $bit: { expdata: { or: Int32( 5 ) } } }
)

La operación or bit a bit:

  • obtiene el valor bit a bit de expdata

  • utiliza or para aplicar el valor bit a bit de Int32(5)

  • actualiza expdata con el resultado, 0111

0111 // expdata
0101 // Int32(5)
----
0111

El binario 0111 equivale a Int32(7). El comando db.switches.find( { _id: 2 } ) devuelve el siguiente documento:

{ "_id" : 2, "expdata" : 7 }

Utiliza un operador bit a bit xor en la operación updateOne() para actualizar expdata.

db.switches.updateOne(
{ _id: 3 },
{ $bit: { expdata: { xor: Int32( 5 ) } } }
)

La operación and bit a bit:

  • obtiene el valor bit a bit de expdata

  • utiliza and para aplicar el valor bit a bit de Int32(5)

  • actualiza expdata con el resultado, 0100

0001 // expdata
0101 // Int32(5)
----
0100

El binario 0100 es equivalente a Int32(4). El comando db.switches.find( { _id: 3 } ) devuelve el siguiente documento:

{ "_id" : 1, "expdata" : 4 }

Tip

Volver

Bitwise

En esta página