2016-09-04 6 views
-1

으로 배열 하위 하위 문서를 누르면 내가 스키마 countrySchemacitySchema는 몽구스

citySchema = { 
    cityName: String, 
    schools: [schoolSchema] 
} 

countrySchema = { 
    countryName: String, 
    cities: [citySchema] 
} 

나는 도시 스키마의 schools 배열에 학교를 밀어 할 수 있습니다.

나는 이미 countryIdcityId 알고, 그래서 나는

Country.findByIdAndUpdate(countryId, { $push: { 'cities.schools': school } }, (err, country) => { 
    // 
}); 

같은 것을 추측하지만 난 학교가 속해있는 도시 지정하지 않기 때문에이 작동하지 않습니다.

어떻게 쿼리해야합니까? 어쩌면 그것은 또한 당신이 이미 cityId을 가지고 있기 때문에, 당신은 단순히 도시에서 "학교"경로에 학교를 밀어 수

Country.findOneAndUpdate({ _id: countryId, 'cities._id': cityId }, { $push: { 'cities.schools': school } }, (err, country) => { 
    // 
}); 

답변

0
City.findByIdAndUpdate(cityId, { $push: { 'schools': school } }, (err, city) => {}); 

수 있습니다.

+0

하지만 'citySchema'에서 'City'모델을 만든 적이 없습니다. 내 '국가'모델에서 모든 스키마를 중첩하는 대신 모든 스키마에 대한 모델을 만드는 것이 더 좋은 아이디어일까요? – Jamgreen

+0

그게 달려 있습니다. 그러나 citySchema에서 쿼리를 수행하는 경우 포함 된 문서가 아닌 별도의 문서를 사용하는 것이 좋습니다. 그렇다면 해당 국가를 삭제 한 후 "유효하지 않은"도시를 제거해야합니다. –