Java 드라이버를 사용하여 MongoDB에 대한 $or 쿼리를 작성하려면 어떻게 해야 합니까?
(자바 드라이버를 사용하여) MongoDB의 몇 가지 조건을 Or하려고 합니다.제가 하고 있는 일은 다음과 같습니다.
Pattern regex = Pattern.compile("title");
DBCollection coll = MongoDBUtil.getDB().getCollection("post_details");
BasicDBObject query = new BasicDBObject();
query.put("category_title", "myCategory");
query.append("post_title", regex);
query.append("post_description", regex);
DBCursor cur = coll.find(query);
while(cur.hasNext()) {
System.out.println(cur.next().get("post_id"));
}
저는 그것을 사용하고 싶습니다.$or
이러한 조건에서 연산을 수행하지만 기본값은 "and"이고 변경 방법을 모르겠습니다.위 코드에서 조건 중 하나가 반환되는 경우null
결과는 다음과 같습니다.null
너무.
쿼리에서 여러 필드를 지정하는 "기본값"은 각 필드가 조건부 필터 역할을 하므로 AND 작업인 것이 맞습니다.
다음 구문을 가진 $or 피연산자를 사용하여 OR 절을 사용하여 MongoDB 쿼리를 수행할 수 있습니다.
db.col.find({$or:[clause1, clause2]})
여기서 각 절은 쿼리가 될 수 있습니다.$or는 최상위 피연산자일 필요는 없지만 MongoDB일 경우 각 절에 대해 인덱스를 사용할 수 있습니다.
예제에서는 다음과 같은 쿼리를 사용합니다.
db.col.find({$or:[{"post_title", regex}, {"post_description", regex}]});
다음을 통해 Java로 구성할 수 있습니다.
DBObject clause1 = new BasicDBObject("post_title", regex);
DBObject clause2 = new BasicDBObject("post_description", regex);
BasicDBList or = new BasicDBList();
or.add(clause1);
or.add(clause2);
DBObject query = new BasicDBObject("$or", or);
필터를 사용하면 다음과 같은 작업을 수행할 수 있습니다.
import com.mongodb.client.model.Filters;
...
Bson filter = Filters.or(
Filters.eq("post_title", regex),
Filters.eq("post_description", regex)
);
언급URL : https://stackoverflow.com/questions/10620771/how-can-i-build-an-or-query-for-mongodb-using-the-java-driver
'source' 카테고리의 다른 글
Git 병합 오류 (0) | 2023.05.25 |
---|---|
log4net을 어떻게 구성하면 로그가 생성됩니다.DebugEnabled가 참입니까? (0) | 2023.05.25 |
커밋되지 않은 변경사항이 있는지 프로그래밍 방식으로 확인하려면 어떻게 합니까? (0) | 2023.05.25 |
MVC3에서 다른 영역에서 동일한 컨트롤러 이름을 사용할 수 있습니까? (0) | 2023.05.25 |
어느 것이 더 빠릅니까?Val 또는 ByRef 기준? (0) | 2023.05.25 |