mongodb - 如何在聚合中的另一个查找中访问查找结果?

时间:2018-01-30 15:36:51

标签: node.js mongodb aggregation-framework

我试图根据之前的查询搜索查找但没有运气。

我得到了我应该得到的所有结果,但办公室总是返回一个空数组 我在这里失踪了什么?



findDetails().then(details =>
    console.log("----------First Promise------------");
    return Promise.all(details.map(item => {
//  ^^^^^^
        return findChart(item.gid).then(detail => 
//      ^^^^^^
            console.log("Detail is ------> " + detail.DISPLAY_NAME)
            const renderData = {
                gid: detail.DISPLAY_NAME,
                pageouttime: item.pageouttime,
                createdAt: item.createdAt,
                oncall: item.oncall,
                comments: item.comments,
                actionLink: item._id.toString(),
            };
            console.log(renderData);
            return renderData;
//          ^^^^^^
        });
    }));
}).then(dataArr => {
    console.log("Final Result is ----> " + dataArr);
    response.data = dataArr;
    res.json(response);
}, err => {
    res.send(err);
});




1 个答案:

答案 0 :(得分:1)

使用$arrayElemAt访问先前查找数组中的元素。

尝试

let: {elem: {$arrayElemAt:["$sales_agent", 0]}} 

&安培;

{$match: {$expr: {$eq: ['$_id', '$$elem.office']}}}

或在一次修改中

let: {office: {$let:{vars:{elem:{$arrayElemAt:["$sales_agent", 0]}}, in:"$$elem.office"}}}