猫鼬聚合反向查找或没有localField的查找[重复]
Posted
技术标签:
【中文标题】猫鼬聚合反向查找或没有localField的查找[重复]【英文标题】:mongoose aggregation reverse lookup or lookup without localField [duplicate] 【发布时间】:2020-12-01 11:09:57 【问题描述】:我想在 Plan Schema 上运行聚合并获取具有引用 ID planId
的反馈。
但是,如果我想填充查找,我需要 Plan 中的参考 ID,但我不喜欢这种保存参考 ID 的策略,我喜欢将所有内容分开。
有什么方法可以在没有参考 ID 的情况下进行填充。
类似的东西。但它不起作用。
const pipe = [
$lookup:
from: 'Feedbacks',
pipeline: [
$match:
planId: '$_id'
],
as: 'feedback'
]
await Plan.aggregate(pipe);
export interface Plan
_id: ObjectId;
...
export interface Feedback
planId: ObjectId;
...
【问题讨论】:
【参考方案1】:我找到了答案。对于其他人:
from: 'Feedbacks',
let: planIdInPlan:"$_id",
pipeline: [
$match:
$expr:
$eq:['$planId', '$$planIdInPlan']
],
as: 'feedback'
【讨论】:
只是一个问题,速度慢,性能差是不是很糟糕?还是从正确的方式查找会更好(在反馈集合上运行聚合并查找计划集合),然后添加更多管道? @KasirBarati 我不认识,我放弃了猫鼬及其类型。意识到 NoSQL 不是我的事,所以完全改成了 Postgresql。以上是关于猫鼬聚合反向查找或没有localField的查找[重复]的主要内容,如果未能解决你的问题,请参考以下文章