요약: 필드의 값이 특정 type을 가지는 document를 모두 가져오고 싶을 때 $type을 사용
우선 아래 documents를 생성했다고 가정합니다.
db.addressBook.insertMany(
[
{ "_id" : 1, 주소 : "2030 Martian Way", 우편번호 : "90698345" },
{ "_id" : 2, 주소: "156 Lunar Place", 우편번호 : 43339374 },
{ "_id" : 3, 주소 : "2324 Pluto Place", 우편번호: NumberLong(3921412) },
{ "_id" : 4, 주소 : "55 Saturn Ring" , 우편번호 : NumberInt(88602117) },
{ "_id" : 5, 주소 : "104 Venus Drive", 우편번호 : ["834847278", "1893289032"]}
]
)
위 collection을 보면, "우편번호" 필드에 다양한 타입의 값이 할당되어 있습니다.
1. 한 개의 타입으로 찾기
여기서 "string" 타입을 가지는 document를 가져와봅시다.
db.addressBook.find( { "우편번호" : { $type : "string" } } );
db.addressBook.find( { "우편번호" : { $type : 2 } } );
위의 두 구문은 동일하게 아래의 결과를 가져옵니다. 왜냐면 MongoDB에서 사용가능한 모든 타입을 숫자로 나타낼 수 있거든요. 하지만 문자열 방식으로 사용하는 것이 좀 더 명시적인 것 같습니다.
{ "_id" : 1, "주소" : "2030 Martian Way", "우편번호" : "90698345" }
{ "_id" : 5, "주소" : "104 Venus Drive", "우편번호" : [ "834847278", "1893289032" ] }
배열 안의 요소 타입도 체크해서 가져오는 것을 알 수 있습니다.
2. 여러 개의 타입으로 찾기
배열을 통해 여러 개의 타입을 검색할 수 있습니다.
"우편번호" 필드가 문자열 또는 숫자 타입으로 되어있는 document를 모두 가져옵시다.
db.addressBook.find( { "우편번호" : { $type : [ "string" , "number" ] } } );
위 구문은 아래 결과를 가져옵니다. 모두 문자열 또는 숫자 타입으로 되어있어 전부 가져오는군요.
{ "_id" : 1, 주소 : "2030 Martian Way", 우편번호 : "90698345" },
{ "_id" : 2, 주소: "156 Lunar Place", 우편번호 : 43339374 },
{ "_id" : 3, 주소 : "2324 Pluto Place", 우편번호: NumberLong(3921412) },
{ "_id" : 4, 주소 : "55 Saturn Ring" , 우편번호 : 88602117 },
{ "_id" : 5, 주소 : "104 Venus Drive", 우편번호 : ["834847278", "1893289032"]}
'MongoDB > Element Query Operators' 카테고리의 다른 글
[MongoDB] $exists (0) | 2022.07.01 |
---|