2010/11/02 19:50
MongoDB를 신규 프로젝트의 개발에서 사용하면서 대부분 C와 D 그리고 R연산 위주로만 발생할 수 있도록 구성하여 사용하기에 첨엔 그다지 고급 쿼리는 필요하지 않았다. 하지만 이제 점점 다양한 형태의 쿼리를 요구하게되고 (물론 RDBMS에서보다야 Naive한 형태지만..-_-;;)하게 되었다. 오늘 고민했던 것은 그중 하나인 'OR'형태의 쿼리문 생성이었다.
MongoDB의 tutorial이 비교적 잘 되어있다고는 하나, 현실적인 요구사항을 모두 반영하고 있지는 못하고 그저 아주 기본적인 형태만을 보이고 있다. 단적인 예로, Database를 생성할때 Optimizing을 위한 몇몇 옵션 파라미터들을 줄 수 있는 모양인데, 전혀 그것에 대한 언급이 없다. 그저 SDK를 보고 있다는 것만을 알 수밖에 없다..
쿼리 작성예제도 그러한데, 아주 기초적인 것들에 대한 이야기는 너무 잘 나와있고 MongoDB를 설치하고 사용하게 하는데 있어서 최대한 쉽고 간편하게 접근할 수 있도록 구성되어있으나, 역시 거기까지일 뿐 소위 말하는 Where절을 어떻게 매칭할 수 있는지에 대한 이야기가 전혀 없었다... 대부분 간단한 AND조건이나, 대소비교 조건을 사용하는 정도만 나와있을 뿐 정작 OR나 Group을 활용한 것등에 대한 이야기가 없었다. 이번엔 OR조건에 해당하는 쿼리작성법과 이를 Java Driver에서 사용하기 위한 방법을 찾던 중 다른 개발자의 블로그에서 발견한 글이 있어 이렇게 첨부한다.
출처 : http://myadventuresincoding.wordpress.com/2010/03/07/mongodb-queries-in-java-using-conditional-operators/
SQL:
1 |
SELECT * FROM dbo.Cars |
2 |
WHERE make="Ford" |
3 |
AND model IN ("Galaxy","Mustang","Meteor") |
MongoDB interactive shell:
1 |
db.cars.find( { "make":"Ford", "model":{ $in: ["Galaxy","Mustang","Meteor"] } } ) |
MongoDB Java driver:
1 |
BasicDBObject query = new BasicDBObject(); |
2 |
query.put("make", "Ford"); |
3 |
String models[] = new String[]{"Galaxy", "Mustang", "Meteor"}; |
4 |
query.put("model", new BasicDBObject("$in", models)); |
5 |
DBCursor resultsCursor = carsCollection.find(query); |
'Programming > NoSQL' 카테고리의 다른 글
| NoSQL에 대한 고찰 (15) | 2010/11/30 |
|---|---|
| MongoDB 성능 테스팅 (2) | 2010/11/02 |
| MongoDB Java Driver에서 IN Query사용하기 (0) | 2010/11/02 |
| MongoDB Select 예제 (0) | 2010/10/26 |
| NoSQL 관련 문서 (0) | 2010/10/26 |
| MongoDB Java에서 Connection하기 (0) | 2010/10/18 |
TAG MongoDB