未填充猫鼬一对多关系
Mongoose one-to-many relationship not being populated
我有一个一对多的关系,一个地方可以有多个评论。这是 2 个模式
export const PlaceSchema = new mongoose.Schema({
name: { type: String, required: true, unique: true },
center: { type: [Number], required: true },
borders: { type: [], required: true },
reviews: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Review' }]
});
export const ReviewSchema = new mongoose.Schema({
user: { type: String, required: true },
city: { type: mongoose.Schema.Types.ObjectId, ref: 'Place', required: true },
creation_date: { type: Date, required: true },
...
});
我有正确地点 ID 的评论。但是当我做一个简单的 this.placeModel.find().populate('reviews').exec()
时,reviews
总是返回一个空数组。但是ID好像没问题,看这里(左边的地方,右边的评论)
这是我与 Mongo 一起玩的第一个副业项目,所以我真的不明白我错过了什么。
您的查询 this.placeModel.find().populate('reviews').exec()
将以这种方式工作:
- 从
places
集合中查找所有 place
文档。
- 对于每个地方文档,遍历
reviews
字段(数组类型)并在reviews
集合中搜索具有匹配id的文档,并将数组元素替换为评论文件。
- Return
reviews
字段已填充评论文档的地点文档列表。
因此,您需要确保您的地点文档在 reviews
字段中包含正确的评论文档 ID,而不是确保您在评论文档中具有正确的地点 ID 以进行您想要的查询执行。
我有一个一对多的关系,一个地方可以有多个评论。这是 2 个模式
export const PlaceSchema = new mongoose.Schema({
name: { type: String, required: true, unique: true },
center: { type: [Number], required: true },
borders: { type: [], required: true },
reviews: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Review' }]
});
export const ReviewSchema = new mongoose.Schema({
user: { type: String, required: true },
city: { type: mongoose.Schema.Types.ObjectId, ref: 'Place', required: true },
creation_date: { type: Date, required: true },
...
});
我有正确地点 ID 的评论。但是当我做一个简单的 this.placeModel.find().populate('reviews').exec()
时,reviews
总是返回一个空数组。但是ID好像没问题,看这里(左边的地方,右边的评论)
这是我与 Mongo 一起玩的第一个副业项目,所以我真的不明白我错过了什么。
您的查询 this.placeModel.find().populate('reviews').exec()
将以这种方式工作:
- 从
places
集合中查找所有place
文档。 - 对于每个地方文档,遍历
reviews
字段(数组类型)并在reviews
集合中搜索具有匹配id的文档,并将数组元素替换为评论文件。 - Return
reviews
字段已填充评论文档的地点文档列表。
因此,您需要确保您的地点文档在 reviews
字段中包含正确的评论文档 ID,而不是确保您在评论文档中具有正确的地点 ID 以进行您想要的查询执行。