好像我的嵌入式文档没有保存到各自的集合中。这是我的模特:
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集合(而非嵌入文档)。
我做错了什么?
答案 0 :(得分:0)
这可能过于简单,但您只调用continent.save()并且永远不会在for循环结束时调用county.save()或country.save()。这只是一个遗漏,还是解决了这个问题。如果是遗漏,请参阅我关于发布输出的说明。