Встроенный документ не сохранен в его коллекции

Кажется, что мои встроенные документы не сохраняются в соответствующие коллекции. Вот моя модель:

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"},
});

... и вот код, который я использую, чтобы сохранить их в MongoDB:

var continentModel = mongoose.model("Continent");
var continent = new continentModel();

country.name = name;

var countryModel = mongoose.model("Country");
var countyModel = mongoose.model("County");
for (var i = 0; i < req.body.countries.length; i++) {
    var country = new countryModel();
    country.name = req.body.countries[i].name;

    for (var j = 0; j < req.body.countries[i].counties.length; j++) {
        var county = new countyModel();
        county.name = req.body.countries[i].counties[j].name;
        county.biggestCity = req.body.countries[i].counties[j].biggestCity;
        countries.counties.push(county);
    }
    continent.countries.push(country;
}
continent.save();

Если я сделаю db.continents.find(), документ вернется со всеми заполненными свойствами (включая страну и страну).

Но если я сделаю db.counties.find() или db.countries.find(), ничего не вернется. Таким образом, создается впечатление, что документы округа и страны не сохраняются в БД в их соответствующие коллекции, а вместо этого сохраняются в коллекцию Continent как обычные свойства (не внедренные документы).

Что я делаю неправильно?

1 ответ

Решение

Это может быть слишком просто, но вы вызываете только continent.save() и никогда не вызываете county.save() или country.save() в конце цикла for. Это просто упущение или это решает проблему. Если это упущение, см. Мою заметку о публикации результатов.

Другие вопросы по тегам