2012-10-10 2 views
0

나는 도시 이름의 배열과 도시 이름의 MongoDB 컬렉션을 가지고있다.배열에서 MongoDB 컬렉션에 포함되지 않은 항목을 찾는 방법

["San Francisco", "chicago", "New York", "Los Angeles"] 

을 그리고 내가 뭘하려는 것은 나 샌프란시스코와 로스 앤젤레스로 반환하는 쿼리를 수행 할 것입니다

{{cityName: "chicago"} 
{cityName: "New York"}} 

처럼 내 컬렉션 같습니다 내 배열처럼 보이는 것을 말한다. 지금까지 단 하나의 아이디어는 쿼리를 수행하고, 일치 항목을 가져오고, 원래 배열에서 배열 빼기를 수행하여 (따라서 내 도시를 가져 오는 것), 한 단계의 쿼리에서이 작업을 수행 할 수 있는지 궁금합니다.

미리 감사드립니다.

+0

나는 underscorejs.com – chovy

+0

에서 _.reject()를 사용하여 응용 프로그램에 Mongo가 아닌 배열이 존재하므로 mongo가 기술적으로 존재하지 않는 것을 반환 할 수 없습니다. –

답변

2

당신은 당신의 MongoDB를 수집에 대해 다음 쿼리를 수행해야합니다 :

이렇게하면 컬렉션에있는 항목과 일치하는 도시의 배열이 반환됩니다 ({$ in : [ "new york", "los angeles", "chicoago", "san francisco" 위의 예에서 돌아올 수 있습니다 : [ "chicago", "new york"]

이제 원래 배열에서 해당 요소를 빼고 원하는 결과를 얻을 수 있습니다.

핵심은 모든 결과를 얻는 것이 아니라 별개의 쿼리를 수행하고 컬렉션이 나타내는 모든 도시가 아닌 관심있는 도시로 쿼리를 제한하는 쿼리를 전달하는 것입니다.

0

mongodb 드라이버를 사용하는 경우에도 배열 빼기가이 방법을 사용할 수있는 유일한 방법이며,이 함수를 지원하면 결국 같은 일을합니다.

MongoDb에 대한 쿼리는 항상 그 값이나 null 값에 포함 된 값을 반환합니다. 따라서 값을 가져 와서 배열 빼기를 수행해야합니다.

0

컬렉션에 혼수가 되셨나요?

{{cityName: "chicago"}, 
{cityName: "New York"}} 

그렇다면, 당신은 할 수 있습니다 :

db.cities.distinct ("CityName이"{CityName이 :

for(var i in collec){ 
    var cityname = collec[i]['cityname']; 
    // if you use jquery 
    var getcity = $.grep(yourarray, function(n,i){ 
    return n == cityname; 
    }); 
    // getcity in an array with all matching elements 
    console.log(getcity); 
} 
+0

각 도시는 컬렉션에있는 별도의 문서입니다. 데이터베이스에서 전체 컬렉션을 가져 오는 것이 바람직하지 않으므로 작동하지 않습니다. – ZacAttack

관련 문제