2017-09-26 17 views
0

IMDB 무비 - 데모 데이터베이스를 CouchDB 인스턴스에 가져 왔으며 일부 Cloudant 자습서 및 참조를 활용하여 Mango에 대해 배우고 있습니다.Cloudant (또는 Mango) 쿼리에서 특정 문서를 제외하는 방법은 무엇입니까?

나는 배우의 이름이 "bruce"인 문서를 식별하기 위해이 쿼리를 작성했습니다. 이제는 결과 집합에서 특정 문서를 제외하기 위해이를 수정하려고합니다. 예를 들어 Movie_name <> 'Monster'입니다.

가능합니까? 그렇다면 아무도이 작업을 수행하는 방법을 알아내는 데 도움이 될 수 있습니까?

{"selector": 
    {"_id": 
    {"$gt": null}, 
    "Person_name": {"$regex": "(?i)bruce"} 
    } 
} 

답변

1

주어진 값 "동일하지 않은"되는 문서에 맞게 사용할 수 $ne 연산자있다.

{ 
    "selector":{ 
    "_id": {"$gt": null}, 
    "Person_name": {"$regex": "(?i)bruce"}, 
    "Movie_name": { "$ne": "Monster" } 
    } 
} 

주의의 단어 : 그것은 피할 수없는 힘 CouchDB를 오히려 활용보다, 데이터베이스에있는 모든 문서의 수동 검색을 할 수 있기 때문에 쿼리에 $regex의 사용은 뛰어난 성능에 대한 조리법 아니다 미리 만들어진 색인. 마찬가지로 $ne 연산자는 비슷한 성능 특성을가집니다.

Cloudant 데이터베이스 (호스팅 된 CouchDB 서비스)에서 권장하는 방법은 쿼리 할 필드에 type=text 색인을 만드는 것입니다. 이 색인을 사용하면 일반 표현식 대신 검색어에 $text 연산자를 사용할 수 있으므로 훨씬 더 효율적입니다.