mongodb - Mongoose 在填充的数组中填充并选择一个字段
问题描述
我有这个数据集:
{
name: "Lakawon Island Resort",
price_per_night: 2804.0,
address: "Cadiz Viejo",
amenities:
{
tv: false,
reservation: false,
},
reviews: [
{
_id: 03020,
user: 1030340,
comment: 'Hi there'
}
]
image:
"https://images.unsplash.com/photo-1591017403286-fd8493524e1e"
},
这是我的架构:
const reviewSchema = mongoose.Schema({
rating: {
type: Number,
required: true
},
comment: {
type: String,
required: true
},
user: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: 'User'
},
}, {
timestamps: true
})
const resortSchema = mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: 'User'
},
name: {
type: String,
required: true
},
price_per_night: {
type: Number,
required: true,
},
address: {
type: String,
required: true
},
reviews: [reviewSchema],
image: {
type: String
},
amenities: {
tv: { type: Boolean, required: true, default: false },
reservation: { type: Boolean, required: true, default: false },
moderate_noise: { type: Boolean, required: true, default: false },
},
}, { timestamps: true
})
const Resort = mongoose.model('Resort', resortSchema)
我正在尝试在评论数组中提取用户对象数组列表,该数组也在度假村列表中。到目前为止,我得到了这个不起作用:
const reviews = await Resort.findById(req.params.id).populate({ path: 'resort.reviews', populate: { path: 'reviews.user' } })
我想就如何实现这一目标寻求帮助。任何想法,所以我会在我的 api 上显示这样的东西?
{
name: "Lakawon Island Resort",
price_per_night: 2804.0,
address: "Cadiz Viejo",
amenities:
{
tv: false,
reservation: false,
},
reviews: [
{
_id: 03020,
user: {
_id: 03030,
name: 'Rick Martin'
},
},
{
_id: 03021,
user: {
_id: 04031,
name: 'Rick Martin'
},
}
]
comment: 'Hi there'
}
]
image:
"https://images.unsplash.com/photo-1591017403286-fd8493524e1e"
},
解决方案
await Resort.findById(req.params.id).populate({ path: 'reviews.user', select: 'name' })
推荐阅读
- php - 如何解决在数组错误时调用成员函数 only()
- javascript - 迭代 zip 可迭代以在表中生成多行 - Reactjs
- python - waitForObject 返回匹配模式的第一个对象。有没有办法获得所有对象的列表?
- css - 当 Flexbox 组件包装时向下推 Grid Container
- javascript - ":active" 不适用于 Firefox 中的 Dragscroll.js
- db2 - 在交互式 sql as400 中调用程序
- javascript - 带有 webextension-polyfill 的浏览器扩展清单 v3 不允许 browser.browserAction.onClicked(在 Chrome 上)
- mongodb - 无法将数据从 mongodb 渲染到车把模板
- algorithm - 数据结构选择 - 打印文件路径
- google-apps-script - 如何将内嵌图像从类 GmailMessage 的 getAttachments 传递到类 MailApp 的 sendEmail?