Definição
Novidades na versão 6.3.
Sintaxe
O operador $bitAnd tem a seguinte sintaxe:
{ $bitAnd: [ <expression1>, <expression2>, ... ] }
Comportamento
Se os operandos incluírem inteiros e valores longos, o sinal-estágios MongoDB o resultado inteiro calculado e retornará um valor longo. Caso contrário, se os operandos incluírem apenas inteiros ou apenas longos, o MongoDB retornará os resultados com o tipo de valor correspondente.
Observação
Todos os números em mongosh são duplos, não inteiros. Para especificar inteiros no mongosh, use o Int32() ou o construtor Long() . Para saber mais, consulte Int32 ou Long.
Para saber como seu driver MongoDB lida com valores numéricos, consulte a documentação do driver.
Se algum argumento na array for de um tipo de dados diferente, como uma string, duplo ou decimal, o MongoDB retornará um erro.
Se o argumento for um array vazio, a operação retornará Int32(-1).
Se algum dos operandos for igual a null , a operação retornará null .
Exemplos
Os exemplos nesta página utilizam a collection switches , que contém os seguintes documentos:
db.switches.insertMany( [ { _id: 0, a: Int32(0), b: Int32(127) }, { _id: 1, a: Int32(2), b: Int32(3) }, { _id: 2, a: Int32(3), b: Int32(5) } ] )
Bitwise AND com dois números inteiros
A seguinte agregação utiliza o operador $bitAnd no estágio $project :
db.switches.aggregate( [ { $project: { result: { $bitAnd: [ "$a", "$b" ] } } } ])
A operação retorna os seguintes resultados:
[ { _id: 0, result: 0 } { _id: 1, result: 2 } { _id: 2, result: 1 } ]
Bitwise AND com um longo e inteiro
A seguinte agregação utiliza o operador $bitAnd no estágio $project :
db.switches.aggregate( [ { $project: { result: { $bitAnd: [ "$a", Long("63") ] } } } ])
A operação retorna os seguintes resultados:
[ { _id: 0, result: Long("0") } { _id: 1, result: Long("2") } { _id: 2, result: Long("3") } ]