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

find mongodb documents with matching UUIDs in separate collections

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

每个 alertWizard.alertId 应该匹配一个 alertRules.id,反之亦然。

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

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

use myMongoDb;
db.getCollection("alertsWizard").aggregate(
   [
      {
         "$match" : {
            "from" : "alertRules",
            "localField" : "$alertId",
            "foreignField" : "id",
            "as" : "matchingAlerts"
         }
      }
   ],
   {
      "allowDiskUse" : false
   }
);

我可以看到它从本地集合中提取所有文档,但无法在 foreign/from 集合中找到任何匹配项。我已经手动确认确实有匹配项,还有一些孤儿法师和规则。

有人可以帮助我至少了解聚合,以便我可以看到匹配项。那么我就可以 != 例外情况。

舞台是$lookup而不是$match

文档here

db.getCollection("alertsWizard").aggregate(
   [
      {
         "$lookup" : {
            "from" : "alertRules",
            "localField" : "$alertId",
            "foreignField" : "id",
            "as" : "matchingAlerts"
         }
      }
   ],
   {
      "allowDiskUse" : false
   }
);