如何在MongoDB中创建将子ID替换为完整子文档的自关联视图
MongoDB 自关联视图实现方案
视图创建代码
直接通过$lookup聚合操作即可实现数组字段的同集合关联,不需要额外循环处理,视图动态计算不占用持久化存储空间:
db.createView("sample_with_full_children", "sample", [ { $lookup: { from: "sample", localField: "children", foreignField: "parent_id", as: "children" } } ])
调用方式
视图创建完成后直接查询即可得到符合要求的结果:
// 查询视图返回替换后的完整文档 db.sample_with_full_children.find()
性能优化建议
给关联字段parent_id添加索引,可大幅提升关联查询效率,适合大数据量场景:
db.sample.createIndex({ parent_id: 1 }, { unique: true })
如果你的业务有极高的查询频率,也可以使用MongoDB 4.2+版本支持的物化视图能力,定期预计算结果进一步降低查询延迟。
内容的提问来源于stack exchange,提问作者PrafulPrasad
相关产品推荐
相关产品推荐

