没有localField的猫鼬聚合反向查找或查找
mongoose aggregation reverse lookup or lookup without localField
我想 运行 聚合计划架构并获取具有参考 ID planId
的反馈。
但是如果我想填充查找,我需要计划中的参考 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;
...
}
我找到了答案。对于其他人:
{
from: 'Feedbacks',
let: { planIdInPlan:"$_id"},
pipeline: [
{
$match: {
$expr:
{
$eq:['$planId', '$$planIdInPlan']
}
}
}
],
as: 'feedback'
}
我想 运行 聚合计划架构并获取具有参考 ID planId
的反馈。
但是如果我想填充查找,我需要计划中的参考 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;
...
}
我找到了答案。对于其他人:
{
from: 'Feedbacks',
let: { planIdInPlan:"$_id"},
pipeline: [
{
$match: {
$expr:
{
$eq:['$planId', '$$planIdInPlan']
}
}
}
],
as: 'feedback'
}