$bitAnd (aggregation)
On this page
Definition
New in version 6.3.
Syntax
The $bitAnd
operator has the following syntax:
{ $bitAnd: [ <expression1>, <expression2>, ... ] }
Behavior
If the operands include both integers and long values, MongoDB sign-extends the calculated integer result and returns a long value. Otherwise, if the operands include only integers or only longs, MongoDB returns results with the corresponding value type.
Note
All numbers in mongosh
are doubles, not integers. To
specify integers in mongosh
, use the NumberInt()
or the
NumberLong()
constructor. To learn more, see Int32 or
Long.
To learn how your MongoDB driver handles numeric values, refer to your driver's documentation.
If any arguments in the array are of a different data type such as a string, double, or decimal, MongoDB returns an error.
If the argument is an empty array, the operation returns NumberInt(-1)
.
If any of the operands equate to null
, the operation returns null
.
Examples
The examples on this page use the switches
collection, which contains the
following documents:
db.switches.insertMany( [ { _id: 0, a: NumberInt(0), b: NumberInt(127) }, { _id: 1, a: NumberInt(2), b: NumberInt(3) }, { _id: 2, a: NumberInt(3), b: NumberInt(5) } ] )
Bitwise AND
with Two Integers
The following aggregation uses the $bitAnd
operator in the
$project
stage:
db.switches.aggregate( [ { $project: { result: { $bitAnd: [ "$a", "$b" ] } } } ])
The operation returns the following results:
[ { _id: 0, result: 0 } { _id: 1, result: 2 } { _id: 2, result: 1 } ]
Bitwise AND
with a Long and Integer
The following aggregation uses the $bitAnd
operator in the
$project
stage:
db.switches.aggregate( [ { $project: { result: { $bitAnd: [ "$a", NumberLong("63") ] } } } ])
The operation returns the following results:
[ { _id: 0, result: NumberLong("0") } { _id: 1, result: NumberLong("2") } { _id: 2, result: NumberLong("3") } ]