从包含引用的字段中获取数据
Get data from field containing reference
我的“Post”架构如下。
export const postSchema = new Schema({
authorId: { type: ObjectId, required: true },
images: { type: [String], required: true },
note: { type: Number, default: null }, // maybe an "Note" documents array
description: { type: String, required: true },
comments: { type: [ObjectId], default: [] },
});
authorId 字段包含具有以下结构的用户文档的 ID:
export const userSchema = new Schema({
name: { type: String, required: true },
email: { type: String, required: true },
password: { type: String, required: true },
stars: { type: Number, default: 0 },
subscribers: { type: Number, default: 0 },
subscriptions: { type: Number, default: 0 },
avatar: {
type: String,
default: `http://localhost:4545/assets/images/avatars/default_avatar.jpg`,
},
posts: { type: [ObjectId], default: [] },
});
当我使用以下方法获取我的 post 时:
const posts = await Post.find()
我想获取引用用户(post 的作者)的“姓名”、“头像”和“_id”字段。
我尝试在我的 post 上映射以使用 authorId 字段获取作者数据,但没有成功。我想用聚合来做,但我不知道。
非常感谢。
你必须在 postSchema
中使用 ref
就像
authorId: { type: ObjectId, required: true , ref: "users"}
并且在查找查询时您必须使用 populate
Post.find().populate('users')
这里users是用户集合
我的“Post”架构如下。
export const postSchema = new Schema({
authorId: { type: ObjectId, required: true },
images: { type: [String], required: true },
note: { type: Number, default: null }, // maybe an "Note" documents array
description: { type: String, required: true },
comments: { type: [ObjectId], default: [] },
});
authorId 字段包含具有以下结构的用户文档的 ID:
export const userSchema = new Schema({
name: { type: String, required: true },
email: { type: String, required: true },
password: { type: String, required: true },
stars: { type: Number, default: 0 },
subscribers: { type: Number, default: 0 },
subscriptions: { type: Number, default: 0 },
avatar: {
type: String,
default: `http://localhost:4545/assets/images/avatars/default_avatar.jpg`,
},
posts: { type: [ObjectId], default: [] },
});
当我使用以下方法获取我的 post 时:
const posts = await Post.find()
我想获取引用用户(post 的作者)的“姓名”、“头像”和“_id”字段。
我尝试在我的 post 上映射以使用 authorId 字段获取作者数据,但没有成功。我想用聚合来做,但我不知道。
非常感谢。
你必须在 postSchema
中使用 ref
就像
authorId: { type: ObjectId, required: true , ref: "users"}
并且在查找查询时您必须使用 populate
Post.find().populate('users')
这里users是用户集合