- 데이터 모델링.References
db.member_tbl.find({memberid:'abc'}); 와 같이 find 하면,
{ "_id" : ObjectId("5cb82543ffd1c1ef601f0350"), "memberid" : "abc" }
위와 같이 _id 의 ObjectId 가 있으며, _id 로 검색도 가능함. 즉 _id 를 다른 Collection 에넣고 참고 하는 방법이 가능.
db.member_tbl.find({_id:ObjectId('5cb82543ffd1c1ef601f0350')});
- 데이터 모델링.BSON
Binary 는 최대 16MB.
- Index
* 각 Index 는 8KB 의 데이타 공간 필요.
* Index 는 system.indexes Collection 에 저장됨 : db.system.indexes.find() 로 Index 확인 가능.
* Index 생성 : db.member_tbl.ensureIndex({"username":1, "hpno":-1}, {"name":"idx_member_tbl"}, {"unique":true},}{"dropDups":true}, {"background":true}) # 1은 오름차순. -1 이면 내림차순. background 는 백그라운드로 생성.
ensureIndex = createIndex
* Index 확인 : db.member_tbl.getIndexes()
* Index 삭제 : db.member_tbl.dropIndex("name_1")
db.runCommand({"dropIndexes":"user", "index":"*"})
- Spatial Index
* db.map_tbl.ensureIndex({"gps":"2d"})
* Ex> {"gps":[0,100]}, {"gps":{"x":30,"y":30}}, {"gps":{"lat":30,"long":30}}
* db.map_tbl.ensureIndex({"gps2":"2d"}, {"min":-1000, "max":1000})
이 경우오류 발생함 : db.map_tbl.insert({"gps2":{-1001, 0}})
* 참고 : https://docs.mongodb.com/manual/core/geospatial-indexes/
- Multikey Index
Array Field Index
- Text Index
* String 컨텐츠에 대한 Index
* 참고 : https://docs.mongodb.com/manual/core/index-text/
- Hashed Index
db.member_tbl.createIndex({"a":"hashed"})
- PLAN 확인.explain
db.member_tbl.find().sort({"$natural":-1}).explain("executionStats")
- Capped Collection ( 제한 컬렉션 )
* 고정사이즈. Insert, Retrive 시 high-throughput.
* Insert 순서 보장.
* 정렬을 위한 인덱스 불필요. 오버헤드 없이 higher insertion throughput.
* db.createCollection("log", { capped:true, size:100000}}
* Document 개수 제한 : db.createCollection("log", { capped:true, size:100000, max:5000}}
* Document 는 항상 입력순서대로 원형큐에 저장
* 큐가 다 찼을 경우, 오래된 문서부터 대치됨.
* 역순서 정렬 : db.user.find().sort({"$natural",-1})
[ 참조 ] https://www.slideshare.net/mrg7211/mongo-db-52216593