728x90
배열 query
배열을 조회할 때는 정확하게 순서 및 값을 지정해야 된다.
값으로 조회
db.collection.fine({key:value})
# 배열형식의 조회는 순서가 정확하게 일치해야 함
db.collection.fine({key:[v1,v2,v3]})
# 하나 이상의 배열요소와 일치하는 값 반환
# 배열의 순서 및 갯수 무관하며 값의 일치여부만 확인
db.collection.find({key:{$all:[v1,v2]}})
# example
# grade 배열 중 'A' 가 있는 경우
> db.user2.find({grade:'A'})
# grade 배열이 'A', 'B', 'C' 인 경우
> db.user2.find({grade:['A','B','C']}) # 1개
# grade 배열 중 'A' 나 'B' 가 있는 경우
> db.user2.find({grade:{$all:['A','B']}})
지정된 인덱스로 조회
db.collection.find({"key.인덱스":value})
# example
# grade 배열의 첫번째 값이 B인 경우
> db.user2.find({"grade.1":'B'})
배열크기로 조회
# 배열 크기가 지정된 size로 반환
db.collection({key:{$size:n개}})
# example
# fruit 배열의 크기가 3인 경우
> db.user2.find({fruit:{$size:3}})
embedded document
중첩 JSON 의 값 조회
# 순서와 값이 중요 { } 사용
db.collection.find({key:{k1:v1, k2:v2}})
# 순서와 값이 무관 . 사용
db.collection.find({key.k1:v1, key.k2:v2}})
# example
# 순서와 값의 개수가 달라 0개 출력
db.user2.find({comments:{email:'gang@example.com'}}) # 0개
# 순서와 값의 개수가 같아 1개 출력
db.user2.find({comments:{email:'gang@example.com', content:'very good'}}) # 1개
# 순서와 무관하게 comments의 email값이 'gang@example'인 경우
db.user2.find({comments.email:'gang@example.com'}) # 1개
limit, skip, sort
db.collection.find().limit(n)
db.collection.find().skip(n)
# 1 : 오른차순 , -1 : 내림차순
db.collection.find().sort({key:1})
# example
# 2개 조회
db.user2.find().limit(2)
# 6개 skip 후 조회
db.user2.find().skip(6)
# age 기준 내림차순 정렬
db.user2.find().sort({age:-1})
# 2개 skip 후 4개 조회 ( age 기준 오름차순 정렬 )
db.user2.find().skip(2).limit(4).sort({age:1})
728x90
'Database > MongoDB' 카테고리의 다른 글
[MongoDB] Aggregation Pipelines (집계 파이프라인) (0) | 2023.09.27 |
---|---|
[MongoDB] 몽고DB의 문서(document) 저장, 수정, 삭제 (0) | 2023.09.27 |