문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

$bitsAnyClear

이 페이지의 내용

  • 행동
  • 예제
$bitsAnyClear

$bitsAnyClear 은(는) field 에서 쿼리로 지정된 비트 위치 하나라도 명확한 문서(예: 0)와 일치합니다.

{ <field>: { $bitsAnyClear: <numeric bitmask> } }
{ <field>: { $bitsAnyClear: < BinData bitmask> } }
{ <field>: { $bitsAnyClear: [ <position1>, <position2>, ... ] } }

field 값은 숫자 또는 BinData 인스턴스여야 합니다. 그렇지 않으면 $bitsAnyClear 이(가) 현재 문서와 일치하지 않습니다.

숫자 비트마스크
피연산자 필드와 일치시킬 숫자 비트마스크를 제공할 수 있습니다. 비트 마스크는 음수가 아닌 64비트 부호 있는 정수여야 합니다. 그렇지 않으면 $bitsAnyClear 가 오류를 반환합니다.
BinData 비트마스크
임의로 큰 BinData 인스턴스를 비트마스크로 사용할 수도 있습니다.
위치 목록
비트 위치 목록을 쿼리하는 경우 각 <position>은 음수가 아닌 정수여야 합니다. 비트 위치는 최하위 비트에서 0부터 시작합니다. 예를 들어 10진수 254의 비트 위치는 다음과 같습니다.
비트 값
1
1
1
1
1
1
1
0
직위
7
6
5
4
3
2
1
0

쿼리의 다른 부분은 해당되는 경우 인덱스를 사용할 수 있지만, 쿼리는 쿼리의 $bitsAnyClear 부분에 인덱스를 사용할 수 없습니다.

$bitsAnyClear 는 부호 있는 64비트 정수로 표시할 수 없는 숫자 값과 일치하지 않습니다. 값이 너무 크거나 너무 작아서 부호 있는 64비트 정수에 맞지 않거나 분수 구성 요소가 있는 경우가 이에 해당할 수 있습니다.

숫자가 부호 확장됩니다. 예를 들어, $bitsAnyClear 은 비트 위치 200 가 음수 -5 에 대해 설정되는 것으로 간주하지만, 비트 위치 200 가 양수 +5 에 대해 비워지는 것으로 간주합니다.

대조적으로 BinData 인스턴스는 0 확장됩니다. 예를 들어 다음 문서가 있다고 가정해 보겠습니다.

db.collection.insertOne({ x: BinData(0, "ww=="), binaryValueofA: "11000011" })

$bitsAnyClearx 이외의 모든 비트를 삭제되지 않은 것으로 간주합니다.

다음 예시에서는 다음 문서와 함께 컬렉션을 사용합니다.

db.collection.insertMany([
{ _id: 1, a: 54, binaryValueofA: "00110110" },
{ _id: 2, a: 20, binaryValueofA: "00010100" },
{ _id: 3, a: 20.0, binaryValueofA: "00010100" },
{ _id: 4, a: BinData(0, "Zg=="), binaryValueofA: "01100110" }
])

다음 쿼리는 $bitsAnyClear 연산자를 사용하여 a 필드에 비트 위치 1 또는 비트 위치 5 지우기가 있는지 테스트합니다(최하위 비트는 위치 0.

db.collection.find( { a: { $bitsAnyClear: [ 1, 5 ] } } )

쿼리가 다음 문서와 일치합니다.

{ "_id" : 2, "a" : 20, "binaryValueofA" : "00010100" }
{ "_id" : 3, "a" : 20.0, "binaryValueofA" : "00010100" }

다음 쿼리는 $bitsAnyClear 연산자를 사용하여 a 0필드의 , 15 위치(비트마스크 의 이진 35 표현은 00100011 임)에서 비워진 비트가 있는지 테스트합니다.

db.collection.find( { a: { $bitsAnyClear: 35 } } )

쿼리가 다음 문서와 일치합니다.

{ "_id" : 1, "a" : 54, "binaryValueofA" : "00110110" }
{ "_id" : 2, "a" : 20, "binaryValueofA" : "00010100" }
{ "_id" : 3, "a" : 20.0, "binaryValueofA" : "00010100" }
{ "_id" : 4, "a" : BinData(0,"Zg=="), "binaryValueofA" : "01100110" }

다음 쿼리는 $bitsAnyClear 연산자를 사용하여 a 4 필드의 및 5 위치( 의 이진 표현은 BinData(0, "MA==") 00110000)에서 비워진 비트가 있는지 테스트합니다.

db.collection.find( { a: { $bitsAnyClear: BinData(0, "MA==") } } )

쿼리가 다음 문서와 일치합니다.

{ "_id" : 2, "a" : 20, "binaryValueofA" : "00010100" }
{ "_id" : 3, "a" : 20.0, "binaryValueofA" : "00010100" }
{ "_id" : 4, "a" : BinData(0,"Zg=="), "binaryValueofA" : "01100110" }
← $bitsAllSet

이 페이지의 내용