我需要对mongodb集合执行汇总。但是我找不到正确的聚合管道。
实际上,field1 == field2
(字段1与字段2不在同一文档中)时,我需要获取不同文档的ID。
例如,当源与目标相同时,我想查找所有文档:document1.fieldX == document2.fieldY
有关通过端口号查找目标服务器的信息。
示例文档:
[
{
id: 444,
name: 'Server 1'
portSource: 1,
portTarget: 7,
},
{
id: 555,
name: 'Server 2'
portSource: 7,
portTarget: 1
},
{
id: 666,
name: 'Server 3'
portSource: 1,
portTarget: 8
},
{
id: 777,
name: 'Server 4'
portSource: 3,
portTarget: 5
},
{
id: 888,
name: 'Server 5'
portSource: 5,
portTarget: 3
},
]
所需的输出:
[
{
portSource: 1, portTarget: 7, sourceId : 444, targetId: 555
},
{
portSource: 3, portTarget: 5, sourceId : 777, targetId: 888
}
]
注释1 :未返回带有id: 666
的服务器,因为其他任何服务器都与其目标端口相匹配。
注释2 :正确的输出也可以像这样:
(反向目标/源)
[
{
portSource: 7, portTarget: 1, sourceId : 555, targetId: 444
},
{
portSource: 5, portTarget: 3, sourceId : 888, targetId: 777
}
]
或者它可以包含两次(正常方式和相反方式):
[
{
portSource: 1, portTarget: 7, sourceId : 444, targetId: 555
},
{
portSource: 7, portTarget: 1, sourceId : 555, targetId: 444
},
{
portSource: 3, portTarget: 5, sourceId : 777, targetId: 888
},
{
portSource: 5, portTarget: 3, sourceId : 888, targetId: 777
}
]