我们有两个集合,Teams
和Matches
。每次报告比赛时,都会在该集合中保存一个新文档,并将其添加到团队文档中的数组中(teams [i] .matches)。
我们系统中一个现已解决的错误导致新的Matchs文档未在其各自的Teams文档中引用。
是否有Mongo DB 3.6.9
的查询可以帮助我们找到小组中未提及的比赛?
答案 0 :(得分:0)
使用$lookup
,聚合管道可以为您提供帮助。
$lookup
提取与from "Teams"
的{{1}}相匹配的文档pipeline
。$match
创建对应于let: { match_id: "$_id" }
的{{1}}的变量match_id
。Match
表达式仅将_id
和$match
保留在Teams
的{{1}}数组中。match_id
存储Team
来验证先前的matches
。as: "matches"
步骤之后的最后Team
个$match
数组为空($match
没有$lookup
)matches
这已通过以下收集模板和Mongo playground在线编辑器进行了测试:
Matches
结果输出为:
Teams