개발관련/MongoDB 2015. 11. 17. 11:12
1
2
db.crudtest.find();
 
cs

특정 collections의 데이터를 전체 가져올때 find()함수로 호출한다. 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
db.crudtest.find(
    {
        $and: [{
            "name":"hwang"
        },{
            
             "id":"wargen"
        }]
    }
 );
 
db.crudtest.find(
    {
        $or: [{
            "id":"wargen"
        },{
            
            "idx":2
        }]
    }
 )    
cs

 

and, or 검색은 위와 같이 $and, $or 의 명령어로 array 를 선언후 object 형태로 찾고자 하는 field를 선언한다. 


특정 배열의 값을 찾고자 할때는 다음과 같이 선언한다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
db.crudtest.find(
    {
        "language.0""java"
    }
);
    
db.crudtest.find(
    {
        "language" : {
            $all : ["js","java"]
            }
    }
 )     
cs


$all의 경우 array의 값이 있는 것들을 전체 다 찾아준다. 


다음은 mongodb의 꽃(?)이라 할수있는 변수 저장 이다. 

1
2
3
4
5
6
7
8
9
10
11
12
var temp = db.crudtest.find(
    {
       "type": {
           $ne : null
       }
    },
    {
        "type":1
    }
 );      
temp;
 
cs
위의 예제는 type이라는 필드에 값이 널이 아니고 type 필드에 값이 있는 document를 찾는 예제이다. 그런데 저 쿼리(?)를 temp라는 변수에 저장 후 temp;를 실행하면 결과가 화면에 나올것이다. 


이때 다시한번 temp; 를 하면 값이 나오지 않을 것이다. 이를 커서라 한다. 커서에 저장된 값 리턴될 값을 저장하는것이 아니고 실행될  쿼리를 저장한다. 그러므로 변수를 호출하면 쿼리가 호출되므로 커서의 값은 사라진다.


위의 예제의 값을 저장하고 싶다면 다음과 같이 생성해야한다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
 
var returnVal = function (){
    while(temp.hasNext()){
    var currentData = temp.next();
        for(var key in currentData.type){
            print(key);
        }
    }
};
 
    
    
returnVal();    
cs

js랑 똑같다. =_=; 



mongodb도 <, >, <=, >= 이런것들을 지원을 한다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
db.crudtest.find(
    {
        "idx" : {
            $lt : 2
        }
    }
);
    
db.crudtest.find(
    {
        "idx" : {
            $lte : 2
        }
    }
);    
    
db.crudtest.find(
    {
        "idx" : {
            $gte : 2
        }
    }
);        
 
db.crudtest.find(
    {
        "idx" : {
            $gt : 2
        }
    }
);        
cs


이상 find는 끝....

posted by 제스트
: