문서 홈 → 애플리케이션 개발 → 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
의 비트 위치는 다음과 같습니다.
비트 값11111110직위76543210
행동
인덱스
쿼리의 다른 부분은 해당되는 경우 인덱스를 사용할 수 있지만, 쿼리는 쿼리의 $bitsAnyClear
부분에 인덱스를 사용할 수 없습니다.
부동 소수점 값
$bitsAnyClear
는 부호 있는 64비트 정수로 표시할 수 없는 숫자 값과 일치하지 않습니다. 값이 너무 크거나 너무 작아서 부호 있는 64비트 정수에 맞지 않거나 분수 구성 요소가 있는 경우가 이에 해당할 수 있습니다.
부호 확장
숫자가 부호 확장됩니다. 예를 들어, $bitsAnyClear
은 비트 위치 200
가 음수 -5
에 대해 설정되는 것으로 간주하지만, 비트 위치 200
가 양수 +5
에 대해 비워지는 것으로 간주합니다.
대조적으로 BinData
인스턴스는 0 확장됩니다. 예를 들어 다음 문서가 있다고 가정해 보겠습니다.
db.collection.insertOne({ x: BinData(0, "ww=="), binaryValueofA: "11000011" })
$bitsAnyClear
은 x
이외의 모든 비트를 삭제되지 않은 것으로 간주합니다.
예제
다음 예시에서는 다음 문서와 함께 컬렉션을 사용합니다.
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
필드의 , 1
및 5
위치(비트마스크 의 이진 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" }
BinData 비트마스크
다음 쿼리는 $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" }