1. DB작업
create database testdb; / use testdb;
show databases; show dbs
drop database testdb; / db.dropDatabase
2. 컬렉션 작업
create table product(); //db.createCollection("product");
show tables; / show collections;
select * from tab;
/ db.test.remove({}), db.test.drop()
3. 문서 조작(삽입) insert / save
db.test.insert({"name" : "mongo"});
db.test.insert){"string": "abc", "array" : ["a" , "b", "c"]});
4. 문서 작업 (선택)
db.test.find();
db.test.find({"string" : "abc"});
ⓐ 변수 값 대입
data = {"string":"abc", "array":["a", "b", "c"]};
db.test.insert(data);
ⓑ
cond = {"string":"abcd"};
db.test.find(cond);
ⓒ JS 문장으로 처리
for (var i=1; i<=5; i++) db.test02.insert({x:1, y:i});
ⓓ Json
var r = db.test02.find()
while(r.hasNext()) printjson(r.next())
ⓔ 배열의 객체
db.test03.insert({"key01":"mongo", "array01":["sun", "mon", "tue"]})
var doc = db.test03.find()
printjson(doc[0]["key01"]);
printjson(doc[0]["array01"][2]);
5. 문서 작업(업데이트)
update : <boolean> : true일 경우 조건이 일치하는 데이터가 없는 경우
새로운 데이터가 추가된다.
multi : <boolean> : true일 경우 조건이 일치하는 데이터 모두 변경
6. 문서 작업(삭제)
delete from emp where name = 'abc'; / db.emp.remove({name : 'abc'})
7. 배열 연산자
db.my.insert({name : "성민", friend : ["윤수", "창수", "길동"]})
db.my.insert({name : "우빈"})
db.my.insert({name:"나래", friend : ["영준", "승룡", "덕현"]})
db.my.insert({name : "윤기"})
db.my.insert({name : "국현", friend : ["진영", "재찬", "상준"]})
입력한 뒤
ⓐ $addToSet : 기존 배열객체 해당 값이 없을 때만 추가한다.
ⓑ $pop : 배열의 첫 번째 or 마지막 요소를 제거한다 (1,-1)
ⓒ $pushAll : 배열에서 여러개의 요소를 제거한다.
ⓓ $pull : 조건에 맞는 요소를 가져와서 제거한다.
ⓔ $push : 배열에 요소를 추가한다. 필드가 없으면 오류가 발생
ⓕ $each : 반복값을 지정하거나 탐색할 때 사용한다.
ⓖ $pullAll : 여러 개 제거
1) 나래 친구 추가하자. 낭경, 다슬
db.my.update({name : "나래"}, {$push : {friend : {$each : ["낭경", "다슬"]}}});
2) 윤기 친구를 낭경, 다슬도 주자.
db.my.update({name : "윤기"}, {$push : {friend : {$each : ["낭경", "다슬"]}}});
3) 윤기 친구 중 다슬을 제거해보자.
db.my.update({name :"윤기"}, {$pop : {friend : 1}});
4) 성민의 친구 중 윤수와 길동을 제거하자.
db.my.update({name : "성민"}, {$pull : {friend : ["윤수", "길동"]}});
5) 우빈 친구는 국현의 친구를 추가하자.
db.my.update({name : "성민"}, {$addToSet : {friend : ["진영", "재찬", "상준"]}});
6) 나래의 test 100, 70, 90, 80을 추가하자.
db.my.update({name : "나래"}, {$push : {test : {$each : [100, 70, 90, 80]}}});
7) 나래의 test 점수 중에 80점 이하를 삭제하자.
db.my.update({name : "나래"}, {$pull : {test : {$lte : 80} }});
Number
Number()
NumberInt()
8) 나래의 test 점수를 100, 95, 30을 추가하되 정수형 32bit로 추가하자.
db.my.update({name : "나래"}, {$push : {test : {$each : [NumberInt(100), NumberInt(95), NumberInt(30)] } }});
8.
20여개의 자료형을 기준으로 설정된 bson에 제공된 기준으로 값들을 바이너리로 매핑해서 저장한다.
{키 : 값} -> Object -> 바이너리(bson) -> 저장
저장된 값을 자료형 확인 $type
(JS의 자료형과 MongoDB의 자료형은 다르다.)
1) 외부의 파일을 로드 -> .json -> js 자료형 -> mongo에서 연산 -> bson으로 지정한 후 -> 결과 도출
2) 외부에 파일을 다른 형식으로 보낼 때
ex) 100, 10.3
ⓐ 숫자를 관리하는 컬렉션을 만들어 숫자를 입력해보자.
db.nums.save({num : 100000})
db.nums.save({num : NumberInt(10000)})
db.nums.save({num : NumberLong(10000)})
db.nums.save({num : 98.9})
ⓑ bson의 자료형의 타입을 이용해서 값을 추출해보자.
- 정수형 int32 자료형을 찾아보자.
db.nums.find({num : {$type : 16}});
- long형을 찾아보장.
db.nums.find({num : {$type : 18}});
- 실수형을 찾아보자.
db.nums.find({num : {$type : 1}});
ⓒ Date객체 생성 후 변수로 만듦.
일반 변수가 아니라 객체이기 때문에 리턴 후 사라지지 않음
db.nums.save({num : new Date() + 2})
게시물을 출력하기 위해선 9번이 아니라 2번이다! (String)
3)
10.
1) [sql, csv, tsv, txt] Mongo + Python (전처리, 분석(마이닝), 차트) => 정형DB서버, Hadoop 적재
2) Mongo + Spring + html5(js)
3) (Mongo + Python) + Spring
4) (Mongo + Python) + Spark
11.
Spring + MongoDB는
https://docs.spring.io/spring-data/mongodb/docs/2.1.6.RELEASE/reference/html/#introduction
참고하기!
12.
1) pom.xml 설정
2) MongoTemplate 만들기!
package com.test;
import java.net.UnknownHostException;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoClientFactoryBean;
import org.springframework.data.mongodb.core.MongoTemplate;
import com.mongodb.MongoClient;
@Configuration
public class AppConfig {
@Bean
public MongoTemplate mongoTemplate() {
MongoTemplate mongoTemplate = null;
try {
mongoTemplate = new MongoTemplate(new MongoClient("127.0.0.1"), "myScore");
} catch (UnknownHostException e) {
e.printStackTrace();
}
return mongoTemplate;
}
}
-> spring-data-mongo 1.10.7버전은 try~ catch를 해주어야 한다.
3) 컬렉션(엔티티)만들기
package com.test;
import java.util.Date;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.DateTimeFormat.ISO;
@Document(collection = "MyUser")
public class MyUser {
@Id
private String id;
@Indexed
private String ic;
private String name;
private int age;
@DateTimeFormat(iso = ISO.DATE)
private Date createDate;
public MyUser() {
}
public MyUser(String id, String name, int age, Date createDate) {
super();
this.id = id;
this.name = name;
this.age = age;
this.createDate = createDate;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
4) 메인 만들기
package com.test;
import java.util.Date;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.data.mongodb.core.MongoOperations;
public class MTest {
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
// @Configuration
MongoOperations mo = (MongoOperations) ac.getBean("mongoTemplate");
MyUser user = new MyUser("111", "홍길동", 30, new Date());
mo.save(user, "MyUser");
// List find(Query(Criteria), Class entityClass)
System.out.println("name이 orange인 레코드를 찾아서 출력");
List res = mo.find(new Query(Criteria.where("name").is("orange")), MyUser.class); .
res = mo.findAll(MyUser.class);
for(MyUser r : res) {
System.out.println(r);
}
System.out.println("age가 30인 과일을 출력해보장");
res = mo.find(new Query(Criteria.where("age").is(30)), MyUser.class);
for(MyUser r : res) {
System.out.println(r);
}
System.out.println("apple를 삭제하자");
mo.remove(new Query(Criteria.where("name").is("apple")), MyUser.class);
for (MyUser r : res) {
System.out.println(r);
((AbstractApplicationContext) ac).close();
}
}
13. Spring에서 Mongo사용하기
1) MongoTemplate : MongoClient()를 통해서 접속을 한다. db를 생성한다.
2) MongoOperations : 쿼리를 실행
3)
'국비교육' 카테고리의 다른 글
MongoDB 7일차 (0) | 2019.04.23 |
---|---|
MongoDB 6일차 (0) | 2019.04.22 |
MongoDB 수업 4일차 (0) | 2019.04.18 |
MongoDB 수업 3일차 (0) | 2019.04.17 |
MongoDB 수업 2일차 - 쿼리 (0) | 2019.04.16 |
댓글