본문 바로가기

IT To do and To was

22년 02월 11일_몽고DB 시작.. wah nojam...

728x90
반응형

금요일[이번 주 한 주는 어떻게 이렇게 빨리 지났는지 모르겠다. ㅎㄱㅇ은 어떻게 하지..]

1. 수업내용 기재

2. 자바 공부

 

1. 몽고 DB 1일차

 

그래픽 User InterFace 

오라클 - Table 관계형 데이터 베이스 

몽고디비란 nosql 형식 X dynamic

응용프로그램을 쉽게 개발하고 확장할 수 있도록 고안

도큐먼트 데이터베이스

 

collection 관계형 DB 테이블에 해당 db 선택된 db출력

show dbs:db 목록 출력 

use<데이터 베이스명> : 기존의 데이터 베이스를 선택 또는 새 dB 생성

insertOne/insertMany : 컬렉션에 도큐먼트를 삽입, 컬렉션에 존재하지 않으면 생성 후 삽입

find: 컬렉션에서 저장된 모든 도큐먼트를 조회

crud

db.collectioninsert

 

Qruery Selector

$eq = 턱정값과 같은 값 참

$qt = 특정ㄱ밧과 다른 값 참

...

몽고디비 에 new connection  입력
mongodb://localhost/

> db
test
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> use bitDB
switched to db bitDB
>

db.movies.insertMany([
{
title: 'Titanic',
year: 1997,
awards: {
wins: 127,
nominations: 63,
text : 'Won 11 Oscars. Another 116 wins & 63 nominations.'
},
cast: [ 'Leonardo Dicaprio','Kate Winslet','Billy Zane' ,'Kathy Bates']
},
{
title: 'The Dark Knight',
year: 2008,
awords: {
wins : 144,
nominations: 106,
text: 'Won 2 Oscars.Anthher 142 wins & 106 nominations.'
},
cast: ['Christian Bale','Heath Ledger','Aaron Eckhart','Micheal Caine'],
directors: ['Christopher Nolan']}
]) 

> db.movies.find().pretty()

movie = {"title" : "Strar Wars : Episode IV - A new Hope",
"director" : "George Lucas",
"year" : 1977}

db.mobies.insertOne(movie)

db.movies.find().pretty()

db.movies.find({"year":{$in:[1997,1998]}})
객체 안 객체 gt(greater than) 크다 sd
db.movies.find({"awards.wins":{$gt:100}})
--특정 필드만 나오게 반환될 거는 1로 지정, 아니면 0 앞{}는 전체를 포함한다는 뜻
db.movies.find({},{"title":1, "directors" :1, "year" :1});
--id를 빼는 명령
db.movies.find({},{"_id"=0,"title":1,"genres":1});
--collection create
db.createCollection("log",{capped: true, size : 542880, max: 5000})
--삭제
db.log.drop()
--새로운 movies 생성
db.movies.insertMany([
{"title":"Ghostbusters"},
{"title" : "E.T."},
{"title" :"Bleade Runner"}]);

--동일한 id값을 넣어보기
db.movies.insertMany([
{"_id":0, "title" : "Top Gun"},
{"_id" : 1, "title" : "Back to the Future"},
{"_id" : 1, "title" : "GreLins"},
{"_id" : 2, "title" : "Aliens"}]) 

--
db.movies.insertMany([
{"_id": 3, "title" : "Sixteen Candles"},
{"_id" : 4, "title" : "The Terminator"},
{"_id" : 4, "title" : "The Princess Bride"},
{"_id" : 5, "title" : "Scarface"}]) 

db.inventory.insertOne(
{item:"canvas",qty:100,tags:["cotton"],size : {h:20,w:30,uom:"cm"}})


조회
db.inventory.find({item:"canvas"})

다수의 도큐먼트 삽입
db.inventory.insertMany([
{item: "note", qty : 25, tags : ["blank","red"],size:{h : 14, w:21, uom:"cm"}},
{item: "mat", qty : 85, tags : ["gray"],size:{h : 28, w:36, uom:"cm"}},
{item: "mousepad", qty : 25, tags : ["gel","blue"],size:{h : 19, w:23, uom:"cm"}}
])

출력
db.inventory.find().pretty()

쿼리예제 도큐먼트 삽입
db.inventory.insertMany([
{item : "journal", qty : 25, size : {h:14, w:21, uom:"cm"}, status:"A"},
{item : "notebook", qty : 50, size : {h:9, w:11, uom:"in"}, status:"A"},
{item : "paper", qty : 100, size : {h:9, w:11, uom:"in"}, status:"D"},
{item : "planner", qty : 75, size : {h:23, w:30, uom:"cm"}, status:"D"},
{item : "postcard", qty : 45, size : {h:10, w:16, uom:"cm"}, status:"A"}
]);

동등비교
db.inventory.find({status:"D"}) 

 ==
select * from inventory
where status = "D"

db.inventory.find({status:{$in:["A","D"]}});

==
select * from inventory where status in ("A","D")

and조건/  less than lt오른쪽에 있는값보다 적은 왼쪽 필드 값
db.inventory.find({status:"A",qty:{$lt:30}}) 

== 
select * form inventory where status = "A" and qty <30;

or조건 / 배열로 표현
db.inventory.find({$or : [{status:"A"},
{qty:{$lt:30}}]})

==
select * from inventory where status = "A" or qty<30;

and, or조건
db.inventory.find({
status:"A",
$or : [{qty:{$lt:30}},{item:/^p/}]
})

==select * from inventory where status = "A" and (qty<30 or item like "p%")

도큐먼트 안에 있는 특정값 find
db.inventory.find(
{size: {h:14, w:21, uom:"cm"}}
)
nested field 에 대해 동등 비교 조건 지정
db.inventory.find({"size.uom" : "in"})

db.inventory.find({"size.h":{$lt:15}})

and 조건 지정hdptj 15미만 이고, uom이 in이며 D인 경우
db.inventory.find({"size.h":{$lt: 15},
"size.uom" : "in", status:"D"})

db.inventory.insertMany([
{item: "journal", qty : 25, tags : ["blank","red"],dim_cm:[14,21]},
{item: "notebook", qty : 50, tags : ["red","blank"],dim_cm:[14,21]},
{item : "paper", qty : 100, tags : ["red","blank", "plain"],dim_cm:[14,21]},
{item : "planner", qty : 75, tags : ["blank", "red"],dim_cm:[23,30]},
{item : "postcard", qty : 45, tags : ["blue"],dim_cm:[10,15]}
]);

--값이 일치하는 경우 찾기
db.inventory.find({tags: ["red","blank"]})

--값을 포함하고 있는 요소조회
db.inventory.find(
{tags:{$all:["red","blank"]}}
)

db.inventory.find(
{tags:"red"})

db.inventory.find({dim_cm:{$gt:25}})
--여러가지 조건 지정하기
db.inventory.find({dim_cm: {$gt: 15, $lt: 20}})

--지정된 조건을 모두 충족하는 것
db.inventory.find({
dim_cm: {$eleMatch: {$gt: 22, $lt: 30}}
})

배열 인덱스로 쿼리
db.inventory.find({"dim_cm.1" : {$gt:20}})


배열의 길이로 쿼리
db.inventory.find({"tags" : {$size :3}})

db.inventory.insertMany([
{item: "journal",instock: [{warehouse: "A", qty: 5},{warehouse: "C", qty: 15}]},
{item: "notebook",instock: [{warehouse: "C", qty: 5}]},
{item : "paper",instock: [{warehouse: "A", qty: 60},{warehouse: "B", qty: 15}]},
{item : "planner",instock: [{warehouse: "A", qty: 40},{warehouse: "B", qty: 5}]},
{item : "postcard",instock: [{warehouse: "B", qty: 15},{warehouse: "C", qty: 35}]},
]);

배열 내부의 도큐먼트 쿼리
db.inventory.find({"instock" : {warehouse:"A", qty: 5}})

db.inventory.find({'instock.qty' : {$lte:20}})

--인덱스를 이룡해서 도큐먼크 쿼리 /작거나 같은 값
db.inventory.find({"instock.0.qty": {$lte:20}}).pretty()

--다중조건 지정하기
db.inventory.find({"instock":{$elemMatch:{qty:{$gt:10, $lte:20}}}})

db.inventory.insertMany([
{item : "journal", size : {h:14, w:21, uom:"cm"}, status:"A", instock:[{warehouse:"A",qty:5}]},
{item : "notebook",  size : {h:9, w:11, uom:"in"}, status:"A", instock:[{warehouse:"C",qty : 50}]},
{item : "paper", size : {h:9, w:11, uom:"in"}, status:"D", instock:[{warehouse:"A",qty : 60}]},
{item : "planner",  size : {h:23, w:30, uom:"cm"}, status:"D", instock:[{warehouse:"A",qty : 40}]},
{item : "postcard", size : {h:10, w:16, uom:"cm"}, status:"A" ,instock:[{warehouse:"B",qty:15},{warehouse:"C",qty : 35}]}

]);

특정필드 지정하기
db.invertory.find({status:"A"},{item:1, status:1})

--특정필드들 제외 시키기
db.inventory.find({status:"A"},{status:0, instock:0})

--내장 도큐먼트의 특정필드 반환
db.inventory.find(
{status :"A"},
{item : 1, status : 1, "size.uom" :1}
)

--특정 필드만 제외시키기
db.inventory.find(
{status : "A"},
{"size.uom":0})

--배열 내의 내장 도큐먼트 프로젝션
db.inventory.find({status : "A"},{item:1, status:1, "instock.qty" : 1})

-- zjffprtus이 동적

db.inventory.insertMany([
{_id:1, item:null},
{_id:2}
])

item 필드가 null이거나 없는 경우 쿼리
db.inventory.find({item:null})

필드를 포함하지 않는 도큐먼트 쿼리
db.inventory.find({item : {exists:false}})
_______________create(insert), read(find)_________________end
update

db.inventory.updateOne({item : "paper"},
{
$set: {"size.uom" :"cm", status : "P"},
$currentDate: {lastModified:true}
})

여러 도큐먼트 갱신
db.inventory.updateMany(
{"qty" :{$lt: 50}},
{
$set:{"size.uom" : "in", status: "P"},
$currentDate : {lastModified: true}
})

도큐먼트 갱신
db.invetory.replaceOne(
{item: "paper"},
{item : "paper", instock: [{warehouse: "A", qty:60}, {warehouse: "B", qty : 40}]})

특정 튜ㅜ플 삭제
db.movies.deleteOne({"_id" : 3])

db.movies.deleteMany(["year" : 1984])
 
진입 후 use bitDB로 들어가야함

시간 상 중략

2.

package algorithm;

import java.util.Scanner;

public class blackjak {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int result = 0;
boolean run = true;
int num = 0;
int nums = 0;
int num2 = 0;

System.out.println("3이상의 카드를 입력해주세요.(*100장을 초과한 숫자는 입력할 수 없습니다.)");
int card = scan.nextInt();
if(card <3) {
System.out.println("3장 이하의 카드는 뽑을 수 없습니다.");
}else if(card > 101){
System.out.println("100장 이상의 카드는 뽑을 수 없습니다.");
}else {
while (run) {
System.out.println("접근할 숫자를 기재해주세요.(10이상 , 30000미만)");
int match = scan.nextInt();  
if(match <10) {
System.out.println("10장 이상의 숫자를 기입해주세요.");
}else if(match >300001) {
System.out.println("300000미만의 숫자를 기입해주세요.");
}else {
for(int i = 0 ; i < card; i++) {
System.out.println((i+1)+"번째 카드의 숫자를 넣어주세요.");
num = scan.nextInt();
for(i=0; i< (card-1); i++) {
System.out.println((i+2)+"번째 카드의 숫자를 넣어주세요.");
nums = scan.nextInt();
}for(i=0; i <(card -2); i++) {
System.out.println((i+3)+"번째 카드의 숫자를 넣어주세요.");
num2 = scan.nextInt();
int a = (num+nums);
int fj = (a+num2)-match;
if(fj<0) {
result = fj;
}
}
// for(i = 0; i < num ; i++) {
// //카드 한 장 뽑기
// num += num;
// for(i=0; i< num; i++) {
// num+=num;
// for(i=0; i<num; i++) {
// result = num+=num;
//
// }
// }
// }
}
System.out.println("답은 :"+result);
run = false;
}

블랙잭 알고리즘 중본

//yesterday wished to today list

. 몽고DB 나에게 좋은 각인 시키기✔

 

 

tomorrow wish list

. 친구들과 사이좋게 지내고 긍정적인 추억만 만들고 오기

728x90
반응형