MongoDB – İlişkilendirme Sonucunda Eşleşmeyen Verileri Getirme

Merhaba,

Önceki yazılarımdan NoSQL – MongoDB İşlevsel Fonksiyonlar ve Aggregate Operatörleri başlıklı makalemde “$lookup” operatörü ile MongoDB veritabanında iki farklı collectionın nasıl ilişkilendirildiğini incelemiştik. Bu içeriğimizde ise ilişkilendirme sonucunda eşleşmeyen verilerinde elde edilmesi için ne yapılması gerektiğini konuşacağız.

İçeriğimizi anlaşılabilir kılmak için “Employee” ve “Order” olmak üzere iki örnek collection üzerinden zenginleştireceğiz.

Employee CollectionOrder Collection
MongoDB - İlişkilendirme Sonucunda Eşleşmeyen Verileri GetirmeMongoDB - İlişkilendirme Sonucunda Eşleşmeyen Verileri Getirme

Yukarıdaki collectionlara göz atarsanız eğer “Employee” collectionındaki “9” ve “10” idlerine sahip documentlere karşılık “Order” collectionında bir kayıt bulunmamaktadır.

router.get("/listOrder", (request, response, next) =>
    employeeModel.aggregate
        ([
            {
                $lookup: {
                    from: "order",
                    localField: "_id",
                    foreignField: "employeeId",
                    as: "orderList"
                }
            },
            {
                $unwind: "$orderList"
            },
            {
                $project: {
                    orderNumber: "$orderList.orderNumber",
                    name: 1,
                    surName: 1
                }
            }
        ])
        .then(data => response.render("home", { data: data }))
        .catch(error => response.send("Veriler listelenirken beklenmeyen bir hatayla karşılaşıldı."))
);

Dolayısıyla bu şekilde bir ilişkilendirme sonucu sadece eşleşen kayıtların geldiğini görmekteyiz.

MongoDB - İlişkilendirme Sonucunda Eşleşmeyen Verileri Getirme

Eğer ki eşleşmeyen kayıtların gelmesini istyorsak aşağıdaki gibi “$unwind” operatöründe “preserveNullAndEmptyArrays” parametresine “true” vermeniz gerekmektedir.

router.get("/listOrder", (request, response, next) =>
    employeeModel.aggregate
        ([
            {
                $lookup: {
                    from: "order",
                    localField: "_id",
                    foreignField: "employeeId",
                    as: "orderList"
                }
            },
            {
                $unwind: {
                    path: "$orderList",
                    preserveNullAndEmptyArrays: true
                }
            },
            {
                $project: {
                    orderNumber: "$orderList.orderNumber",
                    name: 1,
                    surName: 1
                }
            }
        ])
        .then(data => response.render("home", { data: data }))
        .catch(error => response.send("Veriler listelenirken beklenmeyen bir hatayla karşılaşıldı."))
);

Bu işlem neticesinde iki collection arasında eşleşen eşleşmeyen tüm kayıtların elde edildiğini görebilmekteyiz.
MongoDB - İlişkilendirme Sonucunda Eşleşmeyen Verileri Getirme

İlgilenenlerin faydalanması dileğiyle…

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Copy Protected by Chetan's WP-Copyprotect.