2012-05-10 6 views
6

나는 Mongoose/nodejs에서 새로운 편이며 배열 내의 배열을 간단하게 업데이트하는 데 어려움을 겪고있다. 여기 몽구스 업데이트 방법?

스키마입니다 :

var County = new Schema({ 
_id     : Schema.ObjectId, 
name    : String, 
biggestCity   : String 
}); 

var Country = new Schema({ 
_id     : Schema.ObjectId, 
name    : String, 
counties    : {type: [County], ref: "County"} 
}); 

var Continent = new Schema({ 
    _id  : Schema.ObjectId, 
    countries : {type: [Country], ref: "Country"}, 
}); 

그리고 여기에 내가 노력했습니다 업데이트 코드입니다 :

var continents = mongoose.model("Continent"); 
var update = { "countries.counties.name": newName, "countries.counties.biggestCity": newBiggestCity }; 
var conditions = { "_id": countryId, "countries.name": countryName, "countries.counties.name": countyName }; 
var options = { multi: false }; 
wagers.update(conditions, update, options, function(err, numAffected) { 
    //callback code... 
}); 

이 일을, ERR에 오류가 사용하여 배열에 추가 할 수 없습니다 "라는 문자열 필드 이름 'counties' ". 이것은 무엇을 의미 하는가? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

일부 익명 개체의 목록이 아닌 다른 개체로 자식 개체를 정의해야합니다. Reference.

Country을 별도의 스키마로 정의하고 Continent에 중첩하여 업데이트하십시오.

+0

확인. 스키마를 다시 정의 할 필요없이 중첩 배열을 업데이트 할 수있는 다른 방법이 있습니까? – tremolo

+0

@tremolo : 내 몽구스 부 (mongoose-fu)가 여전히 약하거나 그렇지 않을 수도 있지만 어쨌든 '국가'에 대한 스키마를 정의하는 것이 좋습니다. – Ashe

+0

@ 트레몰로 : 새 코드로 질문을 업데이트 할 수 있습니까? – Ashe