MongoDB 按位更新运算符
MongoDB 提供了一个 $bit运算符来执行字段的按位更新。此运算符支持按位异或、按位或和按位与运算。
句法:
{ $bit: { : { : } } }
要点:
- 仅对整数字段使用 $bit运算符(32 位整数或 64 位整数)
- 要在嵌入/嵌套文档或数组中指定字段,请使用点表示法。
- mongo shell 中的所有数字都是 double 而非整数。因此,您需要使用 NumberInt() 或 NumberLong() 构造函数来指定整数。
- 您可以根据需要在 update()、findAndModify() 等方法中使用此运算符。
In the following examples, we are working with:
Database: GeeksforGeeks
Collection: bitexample
Document: three documents that contain the data in the form of field-value pairs.
按位或:
在这个例子中,我们使用 update() 方法将文档(id:g_f_g_2)的 number 字段的值更新为当前值 NumberLong( 5)(即 0101)和 NumberInt(9)(即 1001):
db.bitexample.update({_id: "g_f_g_2"},
{$bit: {number: {or: NumberInt(9)}}})
按位与:
在这个例子中,我们使用 update() 方法将文档(id:g_f_g_1)的 number 字段的值更新为按位的结果(即 NumberInt(1) 或 0001),并在当前值 NumberInt( 11)(即 1011)和 NumberInt(5)(即 0101):
db.bitexample.update({_id: "g_f_g_1"},
{$bit: {number: {and: NumberInt(5)}}})
按位异或:
在这个例子中,我们使用 update() 方法将文档(id:g_f_g_3)的 number 字段的值更新为当前值 NumberLong( 7)(即 0111)和 NumberLong(13)(即 1101):
db.bitexample.update({_id: "g_f_g_3"},
{$bit: {number: {xor: NumberLong(13)}}})