我需要从First Collection到SecondCollection查找MIF。
FirstCollection . . . { "_id" : ObjectId("58d24e8a0f8df93aa0e2ea3c"), "logR" : { "clientIP1" : "0.0.0.0", "clientIP2" : "0.0.0.0", "clientIP3" : "0.0.0.0" }, "test" : [ { "logR" : { "MIF" : "123" } } ] } . . . SecondCollection . . . { "_id" : ObjectId("58d90176bf95238e215f76fc"), "MIFDetails" : [ { "MIF" : "123" } ] } . . .
我尝试了以下但尚未成功。
db.FirstCollection.aggregate([
{
$unwind: "$test"
},
{
$unwind: "$MIFDetails"
},
{
$lookup:
{
from: "SecondCollection",
localField: "test",
foreignField: "MIFDetails",
as: "result"
}
},
{
$match: { "result": { $ne: [] } }
},
{
$out : "resultCollection"
}
])
我期待以下输出
{
"_id" : ObjectId("58d24e8a0f8df93aa0e555dd"),
"logR" : {
"clientIP1" : "0.0.0.0",
"clientIP2" : "0.0.0.0",
"clientIP3" : "0.0.0.0"
},
"test" : [
{
"logR" : {
"MIF" : "123"
}
}
],
"result" : [
{
"_id" : ObjectId("58d90176bf95238e215f76fc"),
"MIFDetails" : [
{
"MIF" : "123"
}
]
}
}
两个集合的MIF匹配,因此结果。这些集合位于同一个数据库中。
答案 0 :(得分:0)
首先展开测试字段,然后根据您的要求选择localField“test.LogR.MIF”,并选择“MIFDetails.MIF”等foreignField。我已经将查询作为以下内容。
db.test1.aggregate(
[{
$unwind: "$test"
},{
$lookup:
{
from: "test2",
localField: "test.logR.MIF",
foreignField: "MIFDetails.MIF",
as: "result"
}
},{
$match: { "result": { $ne: [] } }
},
{
$out : "resultCollection"
}]
)
它返回预期的结果。