【发布时间】:2020-03-07 12:15:36
【问题描述】:
let collection = await Collection.findOne({ 'works._id': req.params.id }).populate('works.0.photo');
此代码将填充索引 0 中的 work 子文档,但我希望它填充与 req.params.id 对应的索引。
我想要.populate('works.i.photo') 之类的东西,其中i 表示包含与req.params.id 匹配的_id 的作品的索引。
我想出了办法,但我确信有更好的方法。
let collection = await Collection.findOne({ 'works._id': req.params.id });
const idx = collection.works.findIndex(work => work._id == req.params.id);
collection = await collection.populate(`works.${idx}.photo`).execPopulate();
这看起来不像是这样做的预期方式。是否可以在不迭代查找索引的情况下做到这一点?最好只执行一次查询。
【问题讨论】:
-
如果您能提供一些示例文件和预期结果就很容易了!!
-
@srinivasy 我添加了更多细节,但我不确定你的意思,因为我无法提供关于我的问题的其他信息。
-
您必须使用 mongoose 还是可以使用 mongoDB 的原生功能 $lookup 来完成(或多或少两者应该类似)?
标签: mongodb mongoose mongodb-query mean-stack mern