2016-10-20 3 views
0

도시와 국가라는 두 가지 컬렉션이 있습니다. 시에서는 내가 국가 컬렉션에 대한 참조 인 country 필드를 가지고 있습니다.참조로 찾기

db.city.find({ country.name: "USA" }) 

하지만 반환 빈 배열을 :

그래서 나는 같은 발견했습니다. 표현식없이 find를 사용하면 모든 결과가 반환되고 "USA"도 반환됩니다.

+0

귀하의 contry 및 도시 컬렉션의 데이터 구조를 게시하십시오. – felix

답변

0

도시 컬렉션의 ID를 통해 해당 국가를 참조한다고 가정 할 때 재귀 적으로이 작업을 수행해야한다고 생각합니다. 이것은 가능한 해결책이 될 수

db.country.find({ name: "USA" }, function(err, country) { 
    db.city.find({ country: country.id }, function(err, cities) { 
    // do something with the data... 
    }); 
}); 
0

왼쪽 외부는 처리 콜렉션 "결합"의 문서에 필터링 같은 데이터베이스에서 다른 모음 조인 수행 집계 워크에 $lookup 연산자를 사용하는 것을 고려 :

db.city.aggregate([ 
    { 
     "$lookup": { 
      "from": "country", 
      "localField": "country", 
      "foreignField": "_id", // <-- reference field from country collection 
      "as": "resultingArray" 
     } 
    }, 
    { "$match": { "resultingArray.name": "USA" } } 
])