在单独的集合中查找具有匹配UUID的mongodb文档

在单独的集合中查找具有匹配UUID的mongodb文档,mongodb,mongodb-query,nosql-aggregation,Mongodb,Mongodb Query,Nosql Aggregation,我有两个集合(包括以下字段): alertWizard.alertId(CRUD警报的UI元素) alertRules.id(生成警报的技术元素) 每个alertWizard.alertId应与单个alertRules.id匹配,反之亦然 我需要查找两个集合中没有与alertWizard.alertId匹配的alertRules.id的所有实例 但即使是一个简单的聚合也似乎不起作用(使用Studio3T聚合工具): 我可以看到它从本地集合中提取所有文档,但在“外来/来自”集合中找不到任何匹配

我有两个集合(包括以下字段):

  • alertWizard.alertId(CRUD警报的UI元素)
  • alertRules.id(生成警报的技术元素)
每个alertWizard.alertId应与单个alertRules.id匹配,反之亦然

我需要查找两个集合中没有与alertWizard.alertId匹配的alertRules.id的所有实例

但即使是一个简单的聚合也似乎不起作用(使用Studio3T聚合工具):

我可以看到它从本地集合中提取所有文档,但在“外来/来自”集合中找不到任何匹配项。我已经手动确认确实存在匹配项,还有一些孤立的向导和规则


有人能至少帮我理解聚合,这样我就可以看到匹配了。那我就可以了!=例外情况。

阶段是
$lookup
而不是
$match

文件


很好,谢谢你的文档。不知怎的,我被误导了与美元的比赛,甚至没有考虑一个$查找。现在查找异常并删除它们。谢谢
use myMongoDb;
db.getCollection("alertsWizard").aggregate(
   [
      {
         "$match" : {
            "from" : "alertRules",
            "localField" : "$alertId",
            "foreignField" : "id",
            "as" : "matchingAlerts"
         }
      }
   ],
   {
      "allowDiskUse" : false
   }
);
db.getCollection("alertsWizard").aggregate(
   [
      {
         "$lookup" : {
            "from" : "alertRules",
            "localField" : "$alertId",
            "foreignField" : "id",
            "as" : "matchingAlerts"
         }
      }
   ],
   {
      "allowDiskUse" : false
   }
);