본문 바로가기

NoSQL8

MongoDB - Aggregation Aggregation 하나 이상의 collection에 대해 분석 가능 stage별로 분석되는 pipeline의 개념 각 stage는 tuning 가능한 process unit 모든 stage에서 data input과 output은 document 형태임 마지막 stage에서 생성된 document에 대한 cursor가 return됨 Aggregation pipeline Pipeline stages : $match, $project, $count, $limt, $sort, $skip, $geoNear, $lookup ... $match : 조건 검색 > db.c.find({ A : 'B' }) > db.c.aggregate([{$match:{A:'B'}}]) $count : 개수 세기 > db.c.fin.. 2023. 8. 9.
MongoDB - text search Text search MongoDB에서 text를 search할 때 사용 keyword query는 exact match만 적용되거나 regular expression도 검색할때 제한이 있음 text index를 만들면 text를 빠르게 찾을 수 있음 Text index 1개 이상의 field에 text index 생성 가능 > db.c.createIndex({a: "text", b: "text"}) -> a, b라는 field에 text 인덱스 생성 모든 text field에 인덱스 생성 가능 > db.c.createIndex({"$**": "text"}) -> 모든 field가 하나의 text index로 들어감 > db.c.createIndex({a:"text"},{name:"idx"}) -> in.. 2023. 8. 8.
MongoDB - Geospatial data Geospatial data GeoJSON type : GeoJSON type을 결정하는 key coordinates : [longitude, lattitude]의 array GeoJSON 예: loc : {type: "Point", coordinates: [100.1, 10.1]} Legacy coordinate pairs array나 embedded document로 저장 array 예 : loc : [100.1, 10.1] embedded document 예 : loc : {'long' : 100.1, 'lati' : 10.1} logitude(경도) : [-180,180] range (degrees) lattitude(위도) : [-90,90] range (degrees) GeoJSON Objec.. 2023. 8. 8.
MongoDB - Indexing Indexing Index : query를 효율적으로 하게 해줌 Index가 없을 때, query시 collection을 full scan해서 시간이 오래 걸림 수행 시간 확인 : db.c.find().explain('executionStats') Index 만들기 createIndex() : index를 만듬. primary key인 _id field의 index는 기본으로 설정되어 있음 > db.c.createIndex({A : 1}) -> A라는 필드에 오름차순으로 인덱스 생성(-1은 내림차순) > db.c.getIndexes() -> 어떤 인덱스를 쓰고 있는지 보여줌 > db.c.dropIndex({A : 1})) -> 해당 인덱스 제거 > db.c.dropIndexes() -> 모든 인덱스 제거.. 2023. 8. 7.