{
"_id": {"$oid": "662a46b69760939bcbe10ba6"},
"item": "journal",
"qty": 25,
"tags": ["blank", "red"],
"dim_cm": [14, 21]
},
{
"_id": {"$oid": "662a46b69760939bcbe10ba7"},
"item": "notebook",
"qty": 50,
"tags": ["red", "blank"],
"dim_cm": [14, 21]
},
{
"_id": {"$oid": "662a46b69760939bcbe10ba8"},
"item": "paper",
"qty": 100,
"tags": ["red", "blank", "plain"],
"dim_cm": [14, 21]
},
{
"_id": {"$oid": "662a46b69760939bcbe10ba9"},
"item": "planner",
"qty": 75,
"tags": ["blank", "red"],
"dim_cm": [22.85, 30]
},
{
"_id": {"$oid": "662a46b69760939bcbe10baa"},
"item": "postcard",
"qty": 45,
"tags": ["blue"],
"dim_cm": [10, 15.25]
}
- array 전체가 정확히 일치하는 document 조회
db.test2.find({tags : ["red", "blank"]})
- array에 해당 값이 포함되는 document 조회
db.test2.find({tags : "red"})
-> tags에 red가 포함된 4개 document 조회
- array의 인덱스로 접근하여 조회
db.test2.find({"dim_cm.0" : {$gt : 20}})
- array의 인덱스로 접근하여 조회 (여러개 조건으로)
db.test2.find({"tags.0" : "blank", "dim_cm.0" : {$gt : 20}})
{
"_id": {"$oid": "662a50369760939bcbe10bab"},
"item": "NORWAY",
"instock": [
{
"warehouse": "A",
"qty": 5
},
{
"warehouse": "C",
"qty": 15
}
]
},
{
"_id": {"$oid": "662a50369760939bcbe10bac"},
"item": "notebook",
"instock": [
{
"warehouse": "C",
"qty": 5
}
]
},
{
"_id": {"$oid": "662a50369760939bcbe10bad"},
"item": "paper",
"instock": [
{
"warehouse": "A",
"qty": 60
},
{
"warehouse": "B",
"qty": 15
}
]
},
{
"_id": {"$oid": "662a50369760939bcbe10bae"},
"instock": [
{
"warehouse": "A",
"qty": 40
},
{
"warehouse": "B",
"qty": 5
}
]
},
{
"_id": {"$oid": "662a50369760939bcbe10baf"},
"item": null,
"instock": [
{
"warehouse": "B",
"qty": 15
},
{
"warehouse": "C",
"qty": 35
}
]
}
- array에서 해당 document가 포함된 document 찾기
db.test3.find({"instock" : {warehouse : "B", qty : 15}})
다음과 같이 순서가 바뀌면 안된다.db.test3.find({"instock" : {qty : 15, warehouse : "B"}})
- dot notation으로 해당 document가 포함된 document 조회
db.test3.find({"instock.qty" : {$gte : 40}})
- dot notation으로 array의 인덱스를 이용하여 해당 document가 포함된 document 조회
db.test3.find({"instock.0.qty" : {$lte : 5}})
- 배열의 크기가 "몇" 이상인 document 구하기
db.test3.find({"instock.1.qty : {$gte : 0}})
{
"_id": {"$oid": "662a57859760939bcbe10bb0"},
"item": "NORWAY",
"instock": [
{
"warehouse": "A",
"qty": 5
},
{
"warehouse": "C",
"qty": 15
}
]
},
{
"_id": {"$oid": "662a57859760939bcbe10bb1"},
"item": "notebook",
"instock": [
{
"warehouse": "C",
"qty": 5
}
]
},
{
"_id": {"$oid": "662a57859760939bcbe10bb2"},
"item": "paper",
"instock": [
{
"warehouse": "A",
"qty": 60
},
{
"warehouse": "B",
"qty": 15
}
]
},
{
"_id": {"$oid": "662a57859760939bcbe10bb3"},
"instock": [
{
"warehouse": "A",
"qty": 40
},
{
"warehouse": "B",
"qty": 5
}
]
},
{
"_id": {"$oid": "662a57859760939bcbe10bb4"},
"item": null,
"instock": [
{
"warehouse": "B",
"qty": 15
},
{
"warehouse": "C",
"qty": 35
}
]
}
- 해당 key의 value가 null이거나, key 자체가 없는 document 조회
db.test4.find({item : null})
- (해당 key의 value가 null이 거나, key 자체가 없는 document)를 제외하고 모두 조회
db.test4.find({item : {$ne : null}})
-> 위의 결과를 제외한 3개 document 조회
- 해당 key 자체가 없는 document 조회
db.test4.find({item : {$exists : false}})
- 해당 key 자체가 없는 document 제외하고 모두 조회
db.test4.find({item : {$exists : true}}, {_id : 0})
-> 위의 결과를 제외한 4개 document 조회
{
"_id": 1,
"name": "Alice King",
"classAverage": 87.33333333333333
},
{
"_id": 2,
"name": "Bob Jenkins",
"classAverage": "83.52"
},
{
"_id": 3,
"name": "Cathy Hart",
"classAverage": "94.06"
},
{
"_id": 4,
"name": "Drew Williams",
"classAverage": 93
}
$type은 필드의 데이터 형식을 기반으로 조회할 때 사용된다. 이때, 각 타입에는 숫자가 지정돼있는데, 다음과 같다.
- 특정 필드가 string인 document 조회
db.test5.find({classAverage : {$type : "string"}})
다음과 같이 해도 결과는 같다.db.test5.find({classAverage : {$type : 2}})
- 특정 필드가 string 또는 double인 document 조회
db.test5.find({classAverage : {$type : ["string", "double"]}})
{
"_id": {"$oid": "662a60839760939bcbe10bb5"},
"item": "journal",
"qty": 25,
"size": {
"h": 14,
"w": 21,
"uom": "cm"
},
"status": "D"
},
{
"_id": {"$oid": "662a60839760939bcbe10bb6"},
"item": "notebook",
"qty": 50,
"size": {
"h": 8.5,
"w": 11,
"uom": "in"
},
"status": "A"
},
{
"_id": {"$oid": "662a60839760939bcbe10bb7"},
"item": "paper",
"qty": 100,
"size": {
"h": 8.5,
"w": 11,
"uom": "in"
},
"status": "D"
},
{
"_id": {"$oid": "662a60839760939bcbe10bb8"},
"item": "planner",
"qty": 75,
"size": {
"h": 22.85,
"w": 30,
"uom": "cm"
},
"status": "D"
},
{
"_id": {"$oid": "662a60839760939bcbe10bb9"},
"item": "paper",
"qty": 45,
"size": {
"h": 10,
"w": 15.25,
"uom": "cm"
},
"status": "A"
}
- ^ : 해당 문자열로 시작하는 필드 찾기
db.test6.find({item : {$regex : "^note"}}) // note로 시작하는 문자열
- $ : 해당 문자열로 끝나는 필드 찾기
db.test6.find({item : {$regex : "nal$"}})
- i 옵션 : 대소문자를 구분하지 않고 정규표현식 적용
db.test6.find({item : {$regex : "PAPER", $options : "i"}})