[DB] MongoDB Java Driver 버그 아닌 버그

C 표현식
(
(a < 0 || a > 100) &&
(b < 0 || b > 100) &&
(c == 0)
)

MongoDB 표현식
{
{ $or: [ { a: { $lt: 0 } }, { a: { $gt: 100 } } ] },
{ $or: [ { b: { $lt: 0 } }, { b: { $gt: 100 } } ] },
{ c: 0 },
}

BasicDBObject query = new BasicDBObject();
query.append("$or", mongo_array(new BasicDBObject("a", new BasicDBObject("$lt", 0)), new BasicDBObject("a", new BasicDBObject("$gt", 100))));
query.append("$or", mongo_array(new BasicDBObject("b", new BasicDBObject("$lt", 0)), new BasicDBObject("b", new BasicDBObject("$gt", 100))));
query.append("c", 0);
Java Driver로 구현시 위 코드와 같이
앞쪽에 있는 것을 key로하는 해시맵에 조건식을 넣게 되는데 (순서대로 "$or", "$or", "c")
문제는 같은 "$or" key가 발생하여 뒤쪽 "$or"식이 앞쪽 "$or"식을 덮어쓰게 된다- LOL
이런 경우 문제가 발생해도 실제로 쿼리식을 뽑아보지않고는 원인을 찾기가 까다롭게 된다
모든 식들을 $and로 묶어서 넣거나 값의 범위가 적다면 $in 문법 등으로 피해가자

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 플라밍고 | 2011/10/17 22:08 | 트랙백 | 덧글(0)

트랙백 주소 : http://puremon.egloos.com/tb/1960929
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

<< 이전 페이지     다음 페이지 >>