0

如何在 MongoDB 中应用 $lookup,如果第二个集合上的记录被删除,仍然给出第一个集合的所有记录的响应,如给定示例所示

第一次收藏

    A: [
         { _id : "a" ,  P : "dljslfsdjf" },
         { _id : "b" ,  P : "dljslfsdjf" },
         { _id : "c" ,  P : "dljslfsdjf" },
         { _id : "d" ,  P : "dljslfsdjf" }

]

第二次收藏

    B: [
     {A _id : "a" ,  Q : "dljslfsdjf" },
     {A_id : "b" ,   Q : "dljslfsdjf" },
     { A_id : "c" ,  Q : "dljslfsdjf" }

]

想要回应——

C: [
 { _id : "a" ,  P : "dljslfsdjf", BB:  {A _id : "a" ,  Q : "dljslfsdjf" } },
 { _id : "b" ,  P : "dljslfsdjf", BB : {A_id : "b" ,   Q : "dljslfsdjf" } },
 { _id : "c" ,  P : "dljslfsdjf", BB :  { A_id : "c" ,  Q : "dljslfsdjf" } },
 { _id : "d" ,  P : "dljslfsdjf", BB: {**anything that indicates record not found**} }

]

我写一个查询——

 db.A.aggregate([
 {
     $match: {
         P : "dljslfsdjf"
     }
 },
 {
     $lookup : {
            from : "B",
            localField : "_id",
            foreignField : "A_id",
            as : "BB"
        }
 }
 {
        $unwind : "$BB"
 }

])

它只返回树记录,不返回--

_id : "d" , P : "dljslfsdjf", BB: {**anything that indicate record not found**}

4

1 回答 1

0

$unwind默认行为是在解构时删除 null 或空数组。如果您需要保留空数组或空值 {$unwind:{ path: "$BB",preserveNullAndEmptyArrays: true}}。参考$unwind

于 2021-01-06T14:00:00.383 回答