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>



블로그 이미지

김진리

,

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mongo="http://www.springframework.org/schema/data/mongo"

xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">


mongoTemplate에 주입시키기 위해서 사용

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">

<constructor-arg ref="mongoDbFactory"/>

</bean>

MakeHttp 객체를 spring 에서 관리하기 위해서 등록 , 변수로 mongoTemplate 을 주입

<bean id="makeHttp" class="httpClient.MakeHttp">

<constructor-arg ref="mongoTemplate"></constructor-arg>

</bean>

mongoDbFactory 에 이름 , DB이름 , host , port , username , password 설정

<beans profile="default">

<mongo:db-factory id="mongoDbFactory" dbname="incatable" host="127.0.0.1" port="27017"

username="inca" password="1"/>

</beans>

</beans>


블로그 이미지

김진리

,

DB 인 admin 안에 계정을 만들어야 합니다.

1. 먼저 use admin 으로 접근하여 사용자 계정을 추가 합니다.

ex) inca , 1 로 생성합니다.

2. auth 를 하기 전엔 show dbs 하였으나 실패했다고 합니다.

3. auth요청을 한 후에는 사용이 가능합니다.


MongoDB Server 작동시

--auth 를 추가한다.



블로그 이미지

김진리

,
블로그 이미지

김진리

,