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 의 안의 쿼리 문이 나오게 된다

블로그 이미지

김진리

,

select longToday, count(*) from incaData group by longToday order by longToday 


절을 mongodb 로 전환하기


db.incaData.aggregate(    {$match  : { nScanResult : 5}}  ,      {$sort : { longToday : -1}} ,    { $group: { _id: "$longToday", count: { $sum: 1 } } }            );


$match는 sql 문에서 where 절 조건 , $sort 는 정렬 , $group 은 group by

블로그 이미지

김진리

,

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 를 추가한다.



블로그 이미지

김진리

,
블로그 이미지

김진리

,