DBObject name = new BasicDBObject("name",value); 를 사용하게 되면 


{ 이름 , 값 } 형식으로 나타 나게 된다 그렇게 때문에 gt lte 를 DBObject 로 표현하게 된다면

{이름 , 값 } { 이름, 값} 형식으로 나오게 된다.


두개의 값을 하나의 Object 로 나타내기 위해서는

BasicDBObject 를 사용하면 된다.


DBObject one = new DBObject();

BasicDBObject name = new BasicDBObject();

name.append("$gte",value);

name.append("$lte",value);


one.put("score",one); 를 하게되면 match 의 안의 쿼리 문이 나오게 된다

블로그 이미지

김진리

,

MongoDB에서 group 함수는 주로 데이터를 그룹화하고 각 그룹에 대한 집계 작업을 수행할 때 사용됩니다.

group은 MongoDB의 Aggregation Framework의 일부로, 예를 들어 특정 필드를 기준으로 그룹화하고 각 그룹의 개수를 세는 작업을 할 수 있습니다.

다음은 MongoDB에서 group 함수를 사용하여 특정 필드를 기준으로 데이터를 그룹화하고 각 그룹의 개수를 세는 예시입니다.

 

db.orders.aggregate([
  {
    $group: {
      _id: "$customerId",  // customerId를 기준으로 그룹화
      totalOrders: { $sum: 1 }  // 각 그룹에 대해 주문 수를 계산
    }
  }
])

 

  • aggregate 메서드는 MongoDB에서 복잡한 데이터 변환을 수행할 때 사용하는 메서드입니다.
  • $group는 데이터를 그룹화하는 연산자입니다.
  • _id: "$customerId": customerId 필드를 기준으로 그룹화합니다. _id는 각 그룹의 고유 식별자가 됩니다.
  • totalOrders: { $sum: 1 }: 각 그룹에서 주문 수를 셉니다. { $sum: 1 }은 각 문서에 대해 1을 더하는 방식으로 각 그룹의 개수를 셉니다.

 

출력 샘플

[
  { "_id": "customer1", "totalOrders": 5 },
  { "_id": "customer2", "totalOrders": 3 },
  { "_id": "customer3", "totalOrders": 7 }
]

 

블로그 이미지

김진리

,

sql쿼리를 mongodb쿼리로 전환

http://www.querymongo.com/

블로그 이미지

김진리

,
블로그 이미지

김진리

,

출처링크 : https://education.10gen.com

블로그 이미지

김진리

,

링크출처 : http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/


Sql 과 MongoDb의 달라진 개념과 Example 을 통해서 구문을 볼수 있습니다.

블로그 이미지

김진리

,

DBCollection coll = mongoTemplate.getCollection("DBname");

DBObject limit = new BasicDBObject("$limit","value");

DBObject skip = new BasicDBObject("$skip", "value");

DBObject snum = new BasicDBObject("num","value");

DBObject sort = new BasicDBObject("$sort",snum);


    //sort 먼저 한후 limit 로 가져올행 skip 할 행

AggregationOutput output = coll.aggregate(sort,limit, skip);


for(DBObject obj : output.results()){

Article art = new Article();

String num = obj.get("value").toString();

String title = obj.get("value").toString();

String content = obj.get("value").toString();

}

limit 를 출력하면

{ "$limit"   : "9" }    9는 임의의 value

skip를 출력하면

{ "$skip"   : "0" }    9는 임의의 value

sort 를 출력하면

{ "$sort"   : { "num" : -1 } }    9는 임의의 value


DBObject 는 하나에 {} 안에 -  변수 : 값 이 들어 간다   ,  { "$변수" : "값"}

DBObject 안에 DBObject snum 변수를 sort의 변수로 사용할시   { "$변수"  :  {"$변수" : "값" } }

블로그 이미지

김진리

,

aggregate 를 지원하는 버전은 2.2 이후 부터 입니다.

dirver 를 2.2 이후나 최신으로 받아 주시거나 maven 을 이용하시면 최신으로 등록해주세요


   <dependency>

<groupId>org.mongodb</groupId>

<artifactId>mongo-java-driver</artifactId>

<version>2.11.0</version>

</dependency>



블로그 이미지

김진리

,

보통 <a href = "#" onclick"함수()"> 를 많이 쓰지만

#는 현재페이지를 가리키기 때문에  현재 페이지의 스크롤 하단을 보다가 페이지가 전환되면서 상단으로 바뀌는 상황이 나타 난다.

그래서 

<a href="javascript:;"> or <a href="javacript:void(0);"> 를 사용하여 아무 기능을 사용하지 않다고 정의해야한다.

블로그 이미지

김진리

,

UrlConnection 은 메모리에 모든 output data를 저장하고 , writting 작업이 끝나면 그때서야 네트워크로 보내기 때문에

UrlConnection.setChuckedStreamingMode() 를 사용해야 한다.

소켓관련등의 작업과 파일 입출력에서는 바이트 배열을 쓰게 되면 운영체제의 다이렉트 버퍼로 일단 한번 복사가 된다.

그리고 거기서 시스템콜에 의해서 실제 해당 버퍼로 전달됨.

 

아래 예제는 내부에 캐시하지말고 들어오는 대로 바로 보내는 설정 방식이다.

/* 
 * @Program that is used to enable streaming of a HTTP request body without 
    internal buffering, when the content length is not known in advance.
 * SetChunkedStreamingMode.java 
 * Author:-RoseIndia Team
 * Date:-25-Jun-2008
 */

import java.net.*;

public class SetChunkedStreamingMode {
 public static void main(String[] args) throws Exception {
        URL url = new URL("http://192.168.10.211:8080");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //enable streaming of a HTTP request body without internal buffering

        connection.setChunkedStreamingMode(1);

        System.out.println("HTTP request body without internal buffering is set");
 }
}

블로그 이미지

김진리

,