https://www.w3schools.com/

 

W3Schools Free Online Web Tutorials

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

db.datecoll.insert ( {_id : 1, name :'가나다', dt : ISODate()})
db.datecoll.insert ( { _id:2, name: 'abc', dt:ISODate("2020-01-01") } )
db.datecoll.insert ( { _id:3, name: 'xyz', dt:ISODate("2021-05-25 13:10") } )
db.datecoll.insert ( { _id:4, name: 'lmn', dt:ISODate("2021-05-25T13:05") } )
db.datecoll.insert ( { _id:5, name: 'ㅋㅋ', dt:ISODate("2020-10-05") } )
db.datecoll.insert ( { _id:6, name: 'mmm', dt: new Date() } )
db.datecoll.insert ( { _id:7, name: 'kkk', dt:ISODate("1998-11-07T00:00:00Z") } )
  • 공백을 넣어줘도 되고 T도 넣어줘도됨
  • 시분초 설정 안 하면 0시 0분 0초가 된다. 
db.datecoll.find().sort({dt:1})		//	dt에 대해서 내림차순 정렬
db.datecoll.find().sort({dt:-1})	//	dt에 대해서 오름차순 정렬

 

년도만 출력하기

1. cursor 변수 사용

var v = db.datecoll.find()
while(v.hasNext()){
	var d = v.next();
	print(d.dt.getYear()+1900)
}
  • getYear() : 세기만 나온다. 꼭 1900더해줘야한다. 

 

2. forEach 사용

db.datecoll.find().forEach( 
	function(c){
    	print(c.dt.getFullYear()); 
    } 
)
2021
2020
2021
2021
2020
2021
1998
  • 이름없는 변수를 만들어서 전달,
  • 수행만 하겠다 하면 forEach써라/

3. map사용

db.datecoll.find().map(
	function(c){
		c = c.dt.getFullYear();
		return c;
	}
)
[ 2021, 2020, 2021, 2021, 2020, 2021, 1998 ]
  • 처리하고 결과 리턴
  • 리턴 된 것을 차곡 차곡 보관했다가 리스트에 담아서 return 
  • 반복문 없어도 됨. 

package mongo.level1;

import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.MongoClient;

public class MongoJava {
	public static void main(String[] args) {
		try {
			MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
			System.out.println("접속 성공-------");
			MongoIterable<String>dblist = mongoClient.listDatabaseNames();
			System.out.println("[데이터 베이스 리스트]");
			for(String name : dblist)
				System.out.println(name);
			MongoDatabase db = mongoClient.getDatabase("edudb");
			MongoIterable<String> clist = db.listCollectionNames();
			System.out.println("[edudb 데이터베이스의 컬렉션 리스트]");
			for(String name : clist) {
				System.out.println(name);
			}
			mongoClient.close();
		}catch (Exception exception) {
			System.err.println(exception.getClass().getName() + " : " + exception.getMessage());
		}
	}
}
package mongo.level1;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;

public class SelectMongo1 {
	public static void main(String[] args) {
		try {
			MongoClient mongoClient = new MongoClient("localhost", 27017);
			MongoDatabase db = mongoClient.getDatabase("edudb");
			MongoCollection<Document> collection = db.getCollection("book");
			MongoCursor<Document> cursor = collection.find().iterator();
			while(cursor.hasNext()) {
				System.out.println(cursor.next());
			}			
		}catch (Exception exception) {
			System.err.println(exception.getClass().getName() + " : " + exception.getMessage());
		}
	}
}
  • 모두다 json형식이지만, mongoDB에 들어가는 데이터만 도큐먼트 

 

[읽어오기]

package mongo.level1;

import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class SelectMongo2 {
	public static void main(String[] args) {
		Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
		mongoLogger.setLevel(Level.SEVERE);
		try {
            MongoClient mongoClient = new MongoClient("localhost", 27017);
            MongoDatabase db = mongoClient.getDatabase("edudb");
            MongoCollection<Document> collection = db.getCollection("book");
            MongoCursor<Document>  cursor = collection.find().iterator();
            while(cursor.hasNext()) {
            	System.out.println(cursor.next());           
            }  		          
            System.out.println("--------------------------------");
            cursor = collection.find().iterator();
            while(cursor.hasNext()) {
            	Document doc = cursor.next();
            	System.out.println(doc.get("name") + " : " + doc.get("price"));           
            }      
            System.out.println("--------------------------------");
            Consumer<Document> printConsumer1 = new Consumer<Document>() {
                @Override
                public void accept(final Document document) {
                    System.out.println(document.toJson());
                }
            };            
           collection.find().forEach(printConsumer1);
           System.out.println("--------------------------------");
           Consumer<Document> printConsumer2 = doc -> System.out.println(doc.toJson());                    
           collection.find().forEach(printConsumer2);
            mongoClient.close();
        } catch (Exception exception) {
            System.err.println(exception.getClass().getName() + ": " + exception.getMessage());
        }
	}
}
  • Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
    • org.mongodb.driver패키지에 들어가있는 출력을 다 무시해라 
  • mongoLogger.setLevel(Level.SEVERE);
    • elvel.SEVERE레벨만 출력해라 
  • new MongoClient("localhost", 27017);
    • 서버주소, 포트번호 각각 url형식말고, 각각 아규먼트로 주는 거 가능
  • cursor = collection.find().iterator();
    • cursor객체는 한번만 읽을 수 있기 때문에, 한번 더 넣는다. 
  • getint(), getString 가능
  • System.out.println(doc.get("price").getClass().getName());
    • get객체가 어떻게 리턴하는지 알 수 있다. 
  • doc.get("price")는 리턴객체가 double이지만, 오브젝트 형으로 가서 
    • 실제 object타입이라서 object형이 쓸 수 있는것만 사용할 수 있는데
    • 이게 정수형으로 바꿀려면
    • ((java.lang.Double)doc.get("price")).intValue())
  •  Consumer<Document> printConsumer2 = doc -> System.out.println(doc.toJson());   
    • 람다 함수 식
      • 받아서 출력한다. 
    • 간단한 것만 가능 

 

package mongo.level1;

import java.util.logging.Level;
import java.util.logging.Logger;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;

public class SelectMongo3 {

	public static void main(String[] args) {
		Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
		mongoLogger.setLevel(Level.SEVERE);
		try {
            MongoClient mongoClient = new MongoClient("localhost", 27017);
            MongoDatabase db = mongoClient.getDatabase("edudb");
            MongoCollection<Document> collection = db.getCollection("book");
           Document  doc = collection.find().first();
           System.out.println(doc.toJson());           
           
           FindIterable<Document>dlist = collection.find(Filters.gt("price", 10000));
           for(Document doc1 : dlist)
           		System.out.println(doc1.toJson());
           
          dlist = collection.find(Filters.eq("name", "javascript"));
           for(var doc1 : dlist)
           		System.out.println(doc1.toJson());
           
           dlist = collection.find(Filters.regex("name", "^ja"));
           for(var doc1 : dlist)
           		System.out.println(doc1.toJson());
           
          dlist =  collection.find(Filters.and(Filters.gt("price", 10000), Filters.lte("price", 20000)));
          for(Document doc1 : dlist)
         		System.out.println(doc1.toJson());
 
            mongoClient.close();
        } catch (Exception exception) {
            System.err.println(exception.getClass().getName() + ": " + exception.getMessage());
        }
	}
}
  • collection.find().first();
    • 첫번째 도큐먼트만
  • filters이용
    • gt, eq, regex, lte메소드 사용

 

package mongo.level1;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class SelectMongo4 {

	public static void main(String[] args) {
		Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
		mongoLogger.setLevel(Level.SEVERE);
		try {
			MongoClient mongoClient = new MongoClient("localhost", 27017);
			MongoDatabase db = mongoClient.getDatabase("edudb");
			MongoCollection<Document> collection = db.getCollection("datecoll");
			Document doc = collection.find().first();
			System.out.println(doc.toJson());

			FindIterable<Document> dlist = collection.find(Filters.eq("name", "ㅋㅋ"));
			for (var doc1 : dlist) {
				Document doc2 = doc1;
				System.out.println(doc2.get("dt"));
				Date d = (Date)doc2.get("dt");
				SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy년 MM 월 dd일 HH시 mm분 ss초"); 
				System.out.println(sdf.format(d)); 
			}
			mongoClient.close();
		} catch (Exception exception) {
			System.err.println(exception.getClass().getName() + ": " + exception.getMessage());
		}
	}
}
  • MongoCollection<Document> collection = db.getCollection("datecoll");
    • datecoll에서 컬렉션 가지고 오기
  • 자바스크립트 데이터 객체를 불러오기
  • Date d = (Date)doc2.get("dt");
    • iso데이터 객체, js데이터 객체는 java.util.Date객체로 변환해서 온다. 
      • dt : Mon Oct 05 09:00:00 KST 2020
    • Data형으로 강제 형 변환

 

 

package mongo.level1;

import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Projections;

public class SelectMongoLab {
	public static void main(String[] args) {
		Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
		mongoLogger.setLevel(Level.SEVERE);
		try {
            MongoClient mongoClient = new MongoClient("localhost", 27017);
            MongoDatabase db = mongoClient.getDatabase("edudb");
            MongoCollection<Document> collection = db.getCollection("cuty");
            Bson obj = Projections.fields(Projections.include("name","age","book"));
            MongoCursor<Document>  cursor = collection.find().projection(obj).iterator();
        	
            while(cursor.hasNext()) {
            	Document doc = cursor.next();
            	//getDouble(get("name")) 	//가능
            	System.out.printf("%s 팀원의 나이는 %.0f\n",doc.get("name"), doc.get("age"));
            	System.out.println("[좋아하는 책리스트]");
            	List<Document> data = new ArrayList<Document>();

            	ArrayList<Document> bookList = (ArrayList<Document>) doc.get("book" );
            	for(Document b : bookList) {
            		System.out.println("책이름 : " + b.get("bookname"));
            		System.out.println("출판사 : " + b.get("publishing_house"));
            		if(b.get("Genre")!= null)System.out.println("장르 : " + b.get("Genre"));
            	}
            	System.out.println("-------------------------------------------------------------");
            }  
            mongoClient.close();
		}catch (Exception e) {
			// TODO: handle exception
		}
	}
}
  • Bson obj = Projections.fields(Projections.include("name","age","book"));
  • MongoCursor<Document>  cursor = collection.find().projection(obj).iterator();
    • 모든거 출력해도 되는데 원하는 것만 출력한다. 
    • find하는데 두번째 아규먼트라고 생각하면 됨.

 

package mongo.level1;

import java.util.logging.Level;
import java.util.logging.Logger;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;

public class UpdateMongo1 {
	public static void main(String[] args) {

		Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
		mongoLogger.setLevel(Level.SEVERE); 
		try {
            MongoClient mongoClient = new MongoClient();
            MongoDatabase db = mongoClient.getDatabase("edudb");
            MongoCollection<Document> collection = db.getCollection("book");
            
            collection.updateOne(Filters.eq("name", "spring"), Updates.set("price", 29999));
            collection.updateOne(Filters.eq("name", "spark"), Updates.inc("price", 11));
            MongoCursor<Document>  cursor  = collection.find().iterator();
            while(cursor.hasNext()) {
            	Document doc1 = cursor.next();
            	System.out.println(doc1.get("name") + " : " + doc1.get("price"));           
            }      
            mongoClient.close();
        } catch (Exception exception) {
            System.err.println(exception.getClass().getName() + ": " + exception.getMessage());
        }
	}
}
  • 원하는 필드만 updateone

 

package mongo.level1;

import java.util.logging.Level;
import java.util.logging.Logger;

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;

public class UpdateMongo2 {

	public static void main(String[] args) {
		Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
		mongoLogger.setLevel(Level.SEVERE);
		try {
            MongoClient mongoClient = new MongoClient();
            MongoDatabase db = mongoClient.getDatabase("edudb");
            MongoCollection<Document> collection = db.getCollection("book");
            Bson filter = Filters.eq("name", "spring");
            Document doc = new Document("name", "SPRING").append("price", 30000);
            collection.replaceOne(filter, doc);
       
            MongoCursor<Document>  cursor  = collection.find().iterator();
            while(cursor.hasNext()) {
            	Document doc1 = cursor.next();
            	System.out.println(doc1.get("name") + " : " + doc1.get("price"));           
            }      
            mongoClient.close();
        } catch (Exception exception) {
            System.err.println(exception.getClass().getName() + ": " + exception.getMessage());
        }
	}
}
  • Filters.eq("name", "spring");
    • 이름이 spring인거 찾아서 bson 객체로

 

  • 서브 파티 api
    • import com,
    • import org

 

mongoDB는 오토인크리먼트가 없음

 

'study > JAVA 전문가' 카테고리의 다른 글

[tomcat] 실습 - html, servelt  (0) 2021.12.27
[Web programming]  (0) 2021.12.27
[mongoDB] 2  (0) 2021.12.23
[mongoDB]  (0) 2021.12.22
[mysql] 연습문제 2  (0) 2021.12.22

+ Recent posts