首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb -如何在聚合的另一个查找中访问查找结果?

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

Stack Overflow用户
提问于 2018-01-30 23:36:51
回答 1查看 548关注 0票数 0

我正在尝试根据之前的查找在查找中进行搜索,但没有成功。

我得到了我应该得到的所有结果,但是office总是返回一个空数组,这里我遗漏了什么?

代码语言:javascript
复制
query[2] = {
            $lookup: {
                from: "users",
                let: {sales_agent: "$sales_agent"},
                pipeline: [
                    {$match: {$expr: {$eq: ['$_id', '$$sales_agent']}}},
                    {$project: {_id: 1, username: 1, office: 1}},
                ],
                as: "sales_agent"
            }
        };
        query[3] = {
            $lookup: {
                from: "offices",
                let: {office: "$sales_agent.0.office"}, //this value supposed to be come from the previous lookup
                pipeline: [
                    {$match: {$expr: {$eq: ['$_id', '$$office']}}},
                    {$project: {_id: 1, city: 1,}},
                ],
                as: "office"
            }
        };

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-31 03:47:30

使用$arrayElemAt访问上一个查找数组中的元素。

试一试

代码语言:javascript
复制
let: {elem: {$arrayElemAt:["$sales_agent", 0]}} 

&

代码语言:javascript
复制
{$match: {$expr: {$eq: ['$_id', '$$elem.office']}}}

或在一次修改中

代码语言:javascript
复制
let: {office: {$let:{vars:{elem:{$arrayElemAt:["$sales_agent", 0]}}, in:"$$elem.office"}}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48525150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档