$lookup结果中的$match

2024-05-12

我有下一个蒙戈代码:

db.users.aggregate([
    { 
        $match: { 
            $and: [
                { UserName: { $eq: 'administrator' } }, 
                { 'Company.CompanyName': { $eq: 'test' } }
            ]                   
        } 
    },
    { 
        $lookup: { 
            from: "companies", 
            localField: "CompanyID", 
            foreignField: "CompanyID", 
            as: "Company" 
        } 
    },
])

The $lookup部分代码运行良好。我得到下一个结果:

但如果我添加$match对于代码来说,它什么也没有带来。

我发现问题出在第二场比赛上:{ 'Company.CompanyName': { $eq: 'test' } },但我无法意识到它有什么问题。 有任何想法吗?

UPDATE:

我也曾尝试过$unwind on the $lookup结果,但没有运气:

db.users.aggregate([
    { 
        $match: { 
            $and: [
                { UserName: { $eq: 'administrator' } }, 
                { 'Company.CompanyName': { $eq: 'edt5' } }
            ] 
        } 
    },
    {   unwind: '$Company' },
    { 
        $lookup: { 
            from: 'companies', 
            localField: 'CompanyID', 
            foreignField: 'CompanyID', 
            as: 'Company' 
        } 
    },
])

使用 MongoDB 3.4,您可以运行使用以下方法的聚合管道:$addFields https://docs.mongodb.com/manual/reference/operator/aggregation/addFields/#pipe._S_addFields管道和一个$filter https://docs.mongodb.com/manual/reference/operator/aggregation/filter/#exp._S_filter运算符仅返回Company包含与给定条件匹配的元素的数组。然后你可以包裹$filter https://docs.mongodb.com/manual/reference/operator/aggregation/filter/#exp._S_filter表达式与$arrayElemAt https://docs.mongodb.com/manual/reference/operator/aggregation/arrayElemAt/#exp._S_arrayElemAt运算符返回单个文档,该文档本质上包含$unwind https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/#pipe._S_unwind通过展平数组来实现功能。

按照这个例子来理解上面的概念:

db.users.aggregate([
    { "$match": { "UserName": "administrator" } },
    { 
        "$lookup": { 
            "from": 'companies', 
            "localField": 'CompanyID', 
            "foreignField": 'CompanyID', 
            "as": 'Company' 
        } 
    },
    {
        "$addFields": {
            "Company": {
                "$arrayElemAt": [
                    {
                        "$filter": {
                            "input": "$Company",
                            "as": "comp",
                            "cond": {
                                "$eq": [ "$$comp.CompanyName", "edt5" ]
                            }
                        }
                    }, 0
                ]
            }
        }
    }
])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

$lookup结果中的$match 的相关文章

随机推荐

  • 空 NSDatePicker

    你好 是否可以让 NSDatePicker 代表 nil 对象 类似 或任何其他方式 谢谢 拉杜 简短回答 否 NSDatePicker 只是忽略无效日期和 nil 例如 这不会更新 NSDatePicker 旧值仍然存在 datePick
  • 如何用C++解析复杂的字符串?

    我试图弄清楚如何使用 解析这个字符串sstream 和C 其格式为 string int int 我需要能够将包含 IP 地址的字符串的第一部分分配给 std string 以下是该字符串的示例 std string 127 0 0 1 1
  • 简单的文档管理系统和API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么 WebView 中的 dataWithPDFInsideRect 不能在 Mavericks 上创建高质量的 PDF?

    Run 示例项目 https github com tvarghese TestWebView并观察桌面上生成的输出 PDF 名为保存网页 pdf 粘贴感兴趣的代码片段 NSURL url NSBundle mainBundle URLFo
  • 如何在主图区域之外的 ggplot2 中添加多个标题

    我想为页脚添加两个标题 但 ggplot 似乎只需要 1 是否有解决方法可以将注释或 geom text 添加到左下角和右下角 library ggplot2 p lt ggplot mtcars aes x wt y mpg geom p
  • 自动创建带有文件输出的目录[重复]

    这个问题在这里已经有答案了 假设我想制作一个文件 filename foo bar baz txt with open filename w as f f write FOOBAR 这给出了一个IOError since foo bar不存
  • Lodash _.hasIntersection?

    我想知道两个或多个数组是否有共同的项目 但我不在乎这些项目是什么 我知道 lodash 有一个 intersection方法 但我不需要它来遍历每个数组的每个项目 相反 我需要类似的东西 hasIntersection一旦找到第一个常见的出
  • 如何使用 Hibernate Session.doWork(...) 进行保存点/嵌套事务?

    我正在使用 JavaEE JPA 托管事务与 Oracle DB 和 Hibernate 并且需要实现某种嵌套事务 据我所知 此类事情不受开箱即用的支持 但我应该能够为此目的使用保存点 正如建议的https stackoverflow co
  • 为“facet_wrap”中的每列创建边框和标题

    我想在每个方面周围放置带有标签和标题的黑色边框facet wrap 与此类似的东西 样本数据 library tidyverse mtcars gt mutate gear factor gear levels c 4 3 5 gt ggp
  • 如何以require格式打印页面的gridview

    我有一个来自数据库的 gridview 问题是当用户单击打印按钮时 我想打印整个页面 gridview 的每一行以给定格式打印为 1 A4 尺寸页面上的 3 行 gridview Printing format 如果你想使用 javascr
  • 如何更改数据表中的少数列名称

    我有一个包含 10 列的数据表 town tc one two three four five six seven total 需要生成我正在使用的列 一 到 总计 的平均值 DTmean lt DT lapply SD mean by t
  • 如何将类组件中的 props 发送到功能组件?

    我是 ReactJS 的初学者 需要知道如何将一个页面中的 props 值发送到另一个页面 道具位于第一页上我可以获取类组件值如何获取另一页中的值 提前致谢 墙色 jsx import React Component from react
  • Java8 lambda 是否像匿名类一样维护对其封闭实例的引用?

    We know https stackoverflow com questions 5054360 do anonymous classes always maintain a reference to their enclosing in
  • Mac OS X 中 Bash 脚本中的 SFTP 命令

    我需要使用 SFTP 和 SSH 从 Mac 主机将文本文件传输到远程 PC freeSSH 这两个连接在本地网络中 那么有没有办法从 Bash 脚本内部运行 SFTP 命令 使用提供的用户名和密码 我已经尝试过一些脚本expect 但我没
  • 如何将事件插入为 - Out Office

    我目前正在使用 Google Calendar API 并尝试在我的谷歌日历中插入新的 外出 事件 我使用以下代码插入事件 client getClient service new Google Service Calendar clien
  • 为什么 strtotime('a') 返回时间?

    我正在 PHP 5 3 中循环遍历 CSV 文件并检查日期 我一直在使用 strtotime 它运行良好 除了我有一个包含 1 或 2 个字符代码的字段 任何单个字符代码上的 strtotime 似乎都像我要求 now 一样 但如果代码是
  • 在 Python 中通过网络发送对象的最佳方式是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要通过网络发送对象 我将使用 Twisted 并且我刚刚开始查看它的文档 据我所知 python实现套接字的唯一方式是通过文本 那么我如何使
  • 在 Woocommerce 的单个产品页面上显示特定的自定义产品属性

    我找到了以下代码 https isabelcastillo com woocommerce product attributes functions在产品详细信息页面上显示所有自定义属性 具有我需要的特定条形设计 代码的工作方式就像一个魅力
  • Tomcat如何通过IP地址限制访问?

    有谁知道Tomcat是否可以通过IP地址限制对某些应用程序的访问 例如Apache的 htaccess 你添加一个Valve to the Context in context xml 具体来说 org apache catalina va
  • $lookup结果中的$match

    我有下一个蒙戈代码 db users aggregate match and UserName eq administrator Company CompanyName eq test lookup from companies local