微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

  • alertWizard.alertId(CRUD警报的UI元素)
  • alertRules.id(生成警报的技术元素)

每个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
   }
);

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

有人可以帮助我至少了解聚合,这样我才能看到匹配项。这样我就可以!=例外了。

解决方法

阶段是$lookup而不是$match

文档here

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。