如何解决在单独的集合中查找具有匹配的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 举报,一经查实,本站将立刻删除。