복붙노트

[MONGODB] 어떻게 MongoDB를 자바 드라이버를 사용하는 $ 또는 쿼리를 만들 수 있습니까?

MONGODB

어떻게 MongoDB를 자바 드라이버를 사용하는 $ 또는 쿼리를 만들 수 있습니까?

나는에 노력하고있어 또는 MongoDB의 몇 가지 조건 (자바 드라이버를 사용). 이것은 내가 뭘하는지 있습니다 :

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"));
}

나는 $ 또는 피연산자 이러한 조건을 사용하고 싶습니다,하지만 난 기본이 추측 "와"나는 그것을 변경하는 방법을 모르겠어요. 위의 코드에서 조건 반환 널 중 하나는, 결과도 널이 될 것입니다 경우.

해결법

  1. ==============================

    1.당신은 쿼리에서 여러 필드를 지정하기위한 "기본"각 필드는 조건부 필터 역할을, 따라서 AND 연산을 있다는 것을 정확합니다.

    당신은 쿼리에서 여러 필드를 지정하기위한 "기본"각 필드는 조건부 필터 역할을, 따라서 AND 연산을 있다는 것을 정확합니다.

    당신은 $를 사용하여 OR 절 MongoDB의 쿼리를 수행하거나 피연산자 다음 구문을 갖고 있습니다 :

    db.col.find({$or:[clause1, clause2]})
    

    어디 각 절은 쿼리가 될 수 있습니다. $ 또는 최상위 피연산자를해야하지 않지만이 경우 MongoDB를 각각 별도의 절에 대한 인덱스를 사용할 수 있습니다.

    귀하의 예제에서는이 쿼리와 끝까지 할 :

    db.col.find({$or:[{"post_title", regex}, {"post_description", regex}]});  
    

    어느 자바를 통해 구성 할 수있다 :

    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);
    
  2. ==============================

    2.필터를 사용하면 당신처럼 만들 수있다 :

    필터를 사용하면 당신처럼 만들 수있다 :

    import com.mongodb.client.model.Filters;
    ...
    
    Bson filter = Filters.or(
                        Filters.eq("post_title", regex), 
                        Filters.eq("post_description", regex)
                      );
    
  3. from https://stackoverflow.com/questions/10620771/how-can-i-build-an-or-query-for-mongodb-using-the-java-driver by cc-by-sa and MIT license