我有两个集合(包括以下字段(:
- 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
}
);
我可以看到它从本地集合中提取所有文档,但在foreign/from集合中找不到任何匹配项。我已经手动确认了确实有匹配,还有一些孤立的巫师和规则。
有人能帮我至少理解聚合,这样我就可以看到比赛了吗。那我就可以了例外情况。
阶段是$lookup
而不是$match
此处的文档
db.getCollection("alertsWizard").aggregate(
[
{
"$lookup" : {
"from" : "alertRules",
"localField" : "$alertId",
"foreignField" : "id",
"as" : "matchingAlerts"
}
}
],
{
"allowDiskUse" : false
}
);