Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

비트

이 페이지의 내용

  • 정의
  • 행동
  • 예시
$bit

$bit 연산자는 필드의 비트 업데이트를 수행합니다. 연산자는 비트 단위 and, 비트 단위 or 및 비트 단위 xor (즉, 배타적 논리합) 연산입니다. $bit 연산자 표현식을 지정하려면 다음 프로토타입을 사용합니다.

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

이 연산자는 정수 필드(32비트 정수 또는 64비트 정수)에만 사용할 수 있습니다.

내장된 문서 나 배열 에 <field> 을 지정하려면 점 표기법 을 사용합니다.

참고

mongosh 의 모든 숫자는 정수가 아닌 더블입니다. mongosh 에서 정수를 지정하려면 NumberInt() 또는 NumberLong() 생성자를 사용합니다. 학습 보려면 Int32 또는 Long을 참조하세요.

MongoDB 드라이버가 숫자 값을 처리하는 방법을 알아보려면 드라이버 설명서를 참조하세요.

MongoDB 5.0부터 빈 피연산자 표현식( { } )과 함께 $bit과 같은 업데이트 연산자를 사용할 때 mongod에서 더 이상 오류가 발생하지 않습니다. 업데이트가 비어 있으면 변경 사항이 없으며 oplog 항목이 생성되지 않습니다(즉, 작업이 작동하지 않음을 의미합니다).

MongoDB 5.0부터 업데이트 연산자는 문자열 기반 이름이 있는 문서 필드를 사전순으로 처리합니다. 숫자 이름이 있는 필드는 숫자 순서대로 처리됩니다. 자세한 내용은 업데이트 운영자 동작을 참조하십시오.

다음 예시에서는 switches 컬렉션을 사용합니다.

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

updateOne() 작업에서 and 비트를 사용하여 expdata를 업데이트합니다.

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

비트 and 작업은 다음을 수행합니다.

  • 다음의 비트 값을 가져옵니다. expdata

  • and를 사용하여 Int32(10)의 비트 값을 적용합니다.

  • 결과 1000으로 expdata를 업데이트합니다.

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

바이너리 1000은 Int32(8)에 해당합니다. db.switches.find( { _id: 1 } ) 명령은 다음 문서를 반환합니다.

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

updateOne() 작업에서 or 비트를 사용하여 expdata를 업데이트합니다.

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

비트 or 작업은 다음을 수행합니다.

  • 다음의 비트 값을 가져옵니다. expdata

  • or을 사용하여 Int32(5)의 비트 값을 적용합니다.

  • 결과 0111로 expdata를 업데이트합니다.

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

바이너리 0111은 Int32(7)에 해당합니다. db.switches.find( { _id: 2 } ) 명령은 다음 문서를 반환합니다.

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

updateOne() 작업에서 xor 비트를 사용하여 expdata를 업데이트합니다.

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

비트 and 작업은 다음을 수행합니다.

  • 다음의 비트 값을 가져옵니다. expdata

  • and을 사용하여 Int32(5)의 비트 값을 적용합니다.

  • 결과 0100으로 expdata를 업데이트합니다.

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

바이너리 0100은 Int32(4)에 해당합니다. db.switches.find( { _id: 3 } ) 명령은 다음 문서를 반환합니다.

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

다음도 참조하세요.

돌아가기

비트 단위

이 페이지의 내용