- 다큐먼트는 네트웍의 최소단위다.
- 문서를 분산해 둘 수 있다.
> kkk3.kkks[1].a;
1
> kkk3.kkks[1].b;
2
>
- 저장소를 가지고 싶다.
> db.helele.save(kkk3.kkks[0]);
> db.helele.save(kkk3.kkks[1]);
> db.helele.save(kkk3.kkks[2]);
>
- 저장소를 가졌다.
- find는 보고자 하는 대상을 요청한다. 맵리듀싱을 한다.
> db.helele.find({});
{ "_id" : ObjectId("52d55ced2304745723e3f40f"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("52d55cf22304745723e3f410"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("52d55cf62304745723e3f411"), "a" : 1, "b" : 2, "c" : 3 }
- db.heleles.find({}); 가로안({})을 시퀀스 객체라고 한다.
- db.heleles.find({},{});
- db.heleles.find({},{},{});
- 확장메소드 형태로 간다.
- a가 1인 data를 찾아라
> db.helele.find({a:1},{},{});
{ "_id" : ObjectId("52d55ced2304745723e3f40f"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("52d55cf22304745723e3f410"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("52d55cf62304745723e3f411"), "a" : 1, "b" : 2, "c" : 3 }
- a가 1이도 b가 2인 data를 찾아라
> db.helele.find({a:1,b:2},{},{});
{ "_id" : ObjectId("52d55ced2304745723e3f40f"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("52d55cf22304745723e3f410"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("52d55cf62304745723e3f411"), "a" : 1, "b" : 2, "c" : 3 }
>
-
> db.helele.find({a:1,b:2},{a:1,b:1},{});
{ "_id" : ObjectId("52d55ced2304745723e3f40f"), "a" : 1, "b" : 2 }
{ "_id" : ObjectId("52d55cf22304745723e3f410"), "a" : 1, "b" : 2 }
{ "_id" : ObjectId("52d55cf62304745723e3f411"), "a" : 1, "b" : 2 }
-
> db.helele.find({a:1,b:2},{a:1,_id:0},{});
{ "a" : 1 }
{ "a" : 1 }
{ "a" : 1 }
-
> db.helele.find({a:1,b:2},{a:1,_id:0},true,false);
{ "a" : 1 }
{ "a" : 1 }
{ "a" : 1 }
>
- 확장해서 메소드를 사용한다.
> db.helele.findOne({a:1,b:2},{a:1,_id:0},true,false);
{ "a" : 1 }
> db.helele.find({a:1,b:2},{a:1,_id:0},true,false).count();
3
> db.helele.find({a:1,b:2},{a:1,_id:0},true,false).skip(1);
{ "a" : 1 }
{ "a" : 1 }
> db.helele.find({a:1,b:2},{a:1,_id:0},true,false).skip(1).limit(2);
{ "a" : 1 }
{ "a" : 1 }
> db.helele.find({a:1,b:2},{a:1,_id:0},true,false).skip(1).limit(1);
{ "a" : 1 }
> db.helele.find({a:1,b:2},{a:1,_id:0},true,false).skip(1).limit(1).count();
3
>
- db 로 시작하면 데이타스토리지 영역의 data를 조회하는 것이다.
> db.helele.find().count();
3
> db.helele.count();
3
> db.helele.find()[2];
{ "_id" : ObjectId("52d55cf62304745723e3f411"), "a" : 1, "b" : 2, "c" : 3 }
> db.helele.find()[2]._id
ObjectId("52d55cf62304745723e3f411")
>
- 포인터를 확인한다.
> db
test
> show dbs
local 0.078125GB
test 0.203125GB
>
- 폴더>데이타베이스>컬렉션>다큐먼트
- use를 사용한다.
> use test;
switched to db test
> db
test
>
- 컬렉션을 조회한다.
> db
test
> db.helele.save({aaa:1});
> show collections
helele
system.indexes
> db.helele2.save({aaa:1});
> db.helele2.save({aaa:2});
> db.helele2.save({aaa:3});
> db.helele2.find();
{ "_id" : ObjectId("52d562802304745723e3f413"), "aaa" : 1 }
{ "_id" : ObjectId("52d562842304745723e3f414"), "aaa" : 2 }
{ "_id" : ObjectId("52d562882304745723e3f415"), "aaa" : 3 }
> show collections;
helele
helele2
system.indexes
>
- persons 데이타베이스를 사용한다.
> use persons;
switched to db persons
> db
persons
> db.helele.save({aaa:11});
> db.helele.save({aaa:12});
> db.helele.find();
{ "_id" : ObjectId("52d563082304745723e3f416"), "aaa" : 11 }
{ "_id" : ObjectId("52d5630e2304745723e3f417"), "aaa" : 12 }
>
- db를 조회한다.
> show dbs;
local 0.078125GB
persons 0.203125GB
test 0.203125GB
>
- db가 셀렉터다.
- 몽고디비는 클라우드 스토리지이다.
- http 접근 가능한 모든 곳에 저장된다.
- 오토 샤딩된다.
> use persons
switched to db persons
> db
persons
> show collections
helele
system.indexes
> db.helele.find({});
{ "_id" : ObjectId("52d563082304745723e3f416"), "aaa" : 11 }
{ "_id" : ObjectId("52d5630e2304745723e3f417"), "aaa" : 12 }
> db.helele.find({},{aaa:11,_id:0});
{ "aaa" : 11 }
{ "aaa" : 12 }
> db.helele.find({},{aaa:11,_id:0})[1];
{ "aaa" : 12 }
> db.helele.find({},{aaa:11,_id:0})[1].aaa
12
> db.helele.find({},{aaa:11,_id:0})[1].aaa=22;
22
> db.helele.find({},{aaa:11,_id:0})[1].aaa;
12
> db.helele.find({},{aaa:11,_id:0});
{ "aaa" : 11 }
{ "aaa" : 12 }
>
- 배열스타일로 가져온다.
> db['helele'].find({},{aaa:11,_id:0})[1];
{ "aaa" : 12 }
>
- 인메모리 디비로 가져온다. 이걸 커조라고 한다.
> db['helele'].find().toArray();
[
{
"_id" : ObjectId("52d563082304745723e3f416"),
"aaa" : 11
},
{
"_id" : ObjectId("52d5630e2304745723e3f417"),
"aaa" : 12
}
]
> db['helele'].find().forEach(printjson);
{ "_id" : ObjectId("52d563082304745723e3f416"), "aaa" : 11 }
{ "_id" : ObjectId("52d5630e2304745723e3f417"), "aaa" : 12 }
> db['helele'].find().pretty();
{ "_id" : ObjectId("52d563082304745723e3f416"), "aaa" : 11 }
{ "_id" : ObjectId("52d5630e2304745723e3f417"), "aaa" : 12 }
>
- distinct
- 그룹
- 키를 가지고 그룹 작업을 한다.
- 에그리케이션 강의
- distinct
> db.helele.find();
{ "_id" : ObjectId("52d563082304745723e3f416"), "aaa" : 11 }
{ "_id" : ObjectId("52d5630e2304745723e3f417"), "aaa" : 12 }
> db.helele.save({bbb:1});
> db.helele.save({bbb:2});
> db.helele.save({ccc:1});
> db.helele.save({ccc:2});
> db.helele.find();
{ "_id" : ObjectId("52d563082304745723e3f416"), "aaa" : 11 }
{ "_id" : ObjectId("52d5630e2304745723e3f417"), "aaa" : 12 }
{ "_id" : ObjectId("52d6af6b693497d1e7f069e0"), "bbb" : 1 }
{ "_id" : ObjectId("52d6af77693497d1e7f069e1"), "bbb" : 2 }
{ "_id" : ObjectId("52d6af80693497d1e7f069e2"), "ccc" : 1 }
{ "_id" : ObjectId("52d6af84693497d1e7f069e3"), "ccc" : 2 }
> db.helele.distinct('bbb');
[ 1, 2 ]
>
- remove
> db.helele.stats();
{
"ns" : "persons.helele",
"count" : 6,
"size" : 216,
"avgObjSize" : 36,
"storageSize" : 4096,
"numExtents" : 1,
"nindexes" : 1,
"lastExtentSize" : 4096,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 8176,
"indexSizes" : {
"_id_" : 8176
},
"ok" : 1
}
> db.helele.remove();
> db.helele.stats();
{
"ns" : "persons.helele",
"count" : 0,
"size" : 0,
"storageSize" : 4096,
"numExtents" : 1,
"nindexes" : 1,
"lastExtentSize" : 4096,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 8176,
"indexSizes" : {
"_id_" : 8176
},
"ok" : 1
}
>
- drop
> show collections
helele
system.indexes
> db.helele.find();
> db.helele.drop();
true
> show collections;
system.indexes
>
- 인덱싱에서 data 가져오기
> db.helele.save({aaa:1});
> db.helele.save({aaa:2});
> db.helele.save({bbb:1});
> db.helele.save({bbb:2});
> db.helele.save({ccc:1});
> db.helele.save({ccc:2});
> db.helele.find();
{ "_id" : ObjectId("52d6b143693497d1e7f069e5"), "aaa" : 1 }
{ "_id" : ObjectId("52d6b143693497d1e7f069e6"), "aaa" : 2 }
{ "_id" : ObjectId("52d6b143693497d1e7f069e7"), "bbb" : 1 }
{ "_id" : ObjectId("52d6b143693497d1e7f069e8"), "bbb" : 2 }
{ "_id" : ObjectId("52d6b143693497d1e7f069e9"), "ccc" : 1 }
{ "_id" : ObjectId("52d6b145693497d1e7f069ea"), "ccc" : 2 }
>
> db.helele.ensureIndex({aaa:2});
> db.helele.find({aaa:2});
{ "_id" : ObjectId("52d6b143693497d1e7f069e6"), "aaa" : 2 }
> db.helele.remove({aaa:2});
> show collections;
helele
system.indexes
>
일반 프로시저와 자바스크립트의 프로시저
일반 프로시저는 스텍서비스다.
자바스크립트 프로시저는 콜백서비스를 쓴다.
{ } (브레이스속에 브레이스는)는 c#의 재귀서비스다.
> db
test
> var aaa={age:1,name:'aaaa',sex:true};
> aaa
{ "age" : 1, "name" : "aaaa", "sex" : true }
> var ccc={
... age:function(person) {
... return person.age;
... },
... name:function(person) {
... return person.name;
... },
... sex:function(person) {
... return person.sex;
... }
... };
> ccc
{
"age" : function (person) {
return person.age;
},
"name" : function (person) {
return person.name;
},
"sex" : function (person) {
return person.sex;
}
}
>
함수포인터 콜백이다.
> ccc.age
function (person) {
return person.age;
}
>
맵 리듀싱 코딩이다.
> ccc.age(aaa);
1
>
- 포인터는 브레이스( { ) 간의 집합이다.
- 프로세스는 리소스 얼로케이션의 단위다.
- use는 스트림포인트라고 본다.
- 컬렉션을 표현 할 때 확장자 s 를 꼭 붙어야 한다.
- db.persons 가 컬렉션이다.
- save는 자바스크립트 오브젝트를 시퀀스에 집어넣는 것이다.
> show dbs;
local 0.078125GB
persons 0.203125GB
test 0.203125GB
> use persons;
switched to db persons
> show collections;
helele
system.indexes
>
> use personDB
switched to db personDB
> db
personDB
> aaa
{
"age" : 1,
"name" : "aaaa",
"sex" : true,
"_id" : ObjectId("52dd3d1f0e922248291cc5e9")
}
>
> db.persons.save(aaa);
- aaa를 save하자 personDB.0 / personDB.1 파일이 생겼다.
- aaa를 영구저장장치로 저장한 것이다.
> show collections
persons
system.indexes
- ObjectId라는 스페셜이 붙었다. UUID이다.
> db.persons.find();
{ "_id" : ObjectId("52dd3d1f0e922248291cc5e9"), "age" : 1, "name" : "aaaa", "sex
" : true }
>
> var bbb={age:2,name:'bbbb',sex:false};
> db.persons.save(bbb);
- 스트림으로 출력한 것과
> db.persons.find();
{ "_id" : ObjectId("52dd3d1f0e922248291cc5e9"), "age" : 1, "name" : "aaaa", "sex
" : true }
{ "_id" : ObjectId("52dd422f0e922248291cc5ea"), "age" : 2, "name" : "bbbb", "sex
" : false }
>
-- 정리된 형태로 불러 온 것이다.
> db.persons.find().toArray();
[
{
"_id" : ObjectId("52dd3d1f0e922248291cc5e9"),
"age" : 1,
"name" : "aaaa",
"sex" : true
},
{
"_id" : ObjectId("52dd422f0e922248291cc5ea"),
"age" : 2,
"name" : "bbbb",
"sex" : false
}
]
>
> db.persons.find().skip(0).limit(1).pretty();
{
"_id" : ObjectId("52dd3d1f0e922248291cc5e9"),
"age" : 1,
"name" : "aaaa",
"sex" : true
}
> db.persons.find().skip(1).limit(1).pretty();
{
"_id" : ObjectId("52dd422f0e922248291cc5ea"),
"age" : 2,
"name" : "bbbb",
"sex" : false
}
>
- explain()은 오리지날 데이터값을 쓴다 .
> db.persons.find().explain();
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
"nscannedObjectsAllPlans" : 2,
"nscannedAllPlans" : 2,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
},
"server" : "actsoft-PC:27017"
}
>
객체는 남아있다.
DB포인트도 남아있다.
collection도 남아있다.
> aaa
{
"age" : 1,
"name" : "aaaa",
"sex" : true,
"_id" : ObjectId("52dd3d1f0e922248291cc5e9")
}
> bbb
{
"age" : 2,
"name" : "bbbb",
"sex" : false,
"_id" : ObjectId("52dd422f0e922248291cc5ea")
}
> db
personDB
> show collections;
persons
system.indexes
>
- 확장 개념 코딩
> db.persons.find({});
{ "_id" : ObjectId("52dd3d1f0e922248291cc5e9"), "age" : 1, "name" : "aaaa", "sex
" : true }
{ "_id" : ObjectId("52dd422f0e922248291cc5ea"), "age" : 2, "name" : "bbbb", "sex
" : false }
> db.persons.find({},{});
{ "_id" : ObjectId("52dd3d1f0e922248291cc5e9"), "age" : 1, "name" : "aaaa", "sex
" : true }
{ "_id" : ObjectId("52dd422f0e922248291cc5ea"), "age" : 2, "name" : "bbbb", "sex
" : false }
> db.persons.find({},{},{}).skip(1);
{ "_id" : ObjectId("52dd422f0e922248291cc5ea"), "age" : 2, "name" : "bbbb", "sex
" : false }
>
- 스트림 객체 형태로 코딩했다.
> db.persons.find({},{},{}).skip(1).limit(1).pretty();
{
"_id" : ObjectId("52dd422f0e922248291cc5ea"),
"age" : 2,
"name" : "bbbb",
"sex" : false
}
>
- ({},{})스트림에서 확장객체다. 이게 서비스다.
- {}하나가 펑션널 객체이다.
- 객체 정보를 보여준다.
> db.persons.find({},{},{},{}).explain();
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
"nscannedObjectsAllPlans" : 2,
"nscannedAllPlans" : 2,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
},
"server" : "actsoft-PC:27017"
}
>
> db.persons.find({age:2},{},{},{});
{ "_id" : ObjectId("52dd422f0e922248291cc5ea"), "age" : 2, "name" : "bbbb", "sex
" : false }
> db.persons.save({age:11});
> db.persons.find();
{ "_id" : ObjectId("52dd3d1f0e922248291cc5e9"), "age" : 1, "name" : "aaaa", "sex
" : true }
{ "_id" : ObjectId("52dd422f0e922248291cc5ea"), "age" : 2, "name" : "bbbb", "sex
" : false }
{ "_id" : ObjectId("52dd44eb0e922248291cc5eb"), "age" : 11 }
>
> db.persons.find({age:11},{},{},{}).forEach(printjson);
{ "_id" : ObjectId("52dd44eb0e922248291cc5eb"), "age" : 11 }
> db.persons.find({age:11},{},{},{});
{ "_id" : ObjectId("52dd44eb0e922248291cc5eb"), "age" : 11 }
>
- find를 하는데 발란스트리를 쓰게 된다.
- 오리지날에서 가져오는게 아니고 idex 테이블에서 가져온다.
> db.persons.ensureIndex({age:1},{},{},{});
> db.persons.find({age:1},{},{},{}).explain();
{
"cursor" : "BtreeCursor age_11",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 1,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"age" : [
[
1,
1
]
]
},
"server" : "actsoft-PC:27017"
}
>
> db
personDB
> show collections
persons
system.indexes
> db.system.indexes.find();
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "personDB.persons", "name" : "_id_" }
{ "v" : 1, "key" : { "age" : 11 }, "ns" : "personDB.persons", "name" : "age_11"
}
{ "v" : 1, "key" : { "age" : 1 }, "ns" : "personDB.persons", "name" : "age_1" }
> db.system.indexes.find().pretty();
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "personDB.persons",
"name" : "_id_"
}
{
"v" : 1,
"key" : {
"age" : 11
},
"ns" : "personDB.persons",
"name" : "age_11"
}
{
"v" : 1,
"key" : {
"age" : 1
},
"ns" : "personDB.persons",
"name" : "age_1"
}
>
[mongodb] 강좌2 BigData MongoDB(NoSQL)
'database > mongodb' 카테고리의 다른 글
[mongodb] 강좌5 BigData MongoDB(NoSQL) (0) | 2014.03.03 |
---|---|
[mongodb] 강좌4 BigData MongoDB(NoSQL) (0) | 2014.03.03 |
[mongodb] 강좌3 BigData MongoDB(NoSQL) (0) | 2014.03.03 |
[mongodb] 강좌1 BigData MongoDB(NoSQL) 설치하기 (0) | 2014.03.03 |