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...
});

これを行うと、「文字列フィールド名 'counties' を使用して配列に追加できません」という err のエラーが表示されます。これは何を意味するのでしょうか?私は何を間違っていますか?

4

1 に答える 1

1

子オブジェクトは、匿名オブジェクトのリストとしてだけでなく、別のスキーマとして定義する必要があります。(参考

別のスキーマとして定義Countryし、それを にネストしてからContinent、更新を行ってください。

于 2012-05-10T11:34:56.807 に答える