MongoDB'de Projeksiyon [Örneklerle]
Yayınlanan: 2020-09-15MongoDB, büyük verileri işlemek ve yönetmek için günümüzün en ünlü veritabanlarından biridir. Veri yönetimini kolaylaştırmak için JSON benzeri belgeler kullanan NoSQL belge odaklı bir veritabanıdır.
Çeşitli MongoDB proje fikirleri kolayca hayata geçirilebilir. Bununla birlikte, MongoDB'nin de birkaç dezavantajı vardır. Varsayılan olarak, belirli bir belge için herhangi bir sorgu tüm verileri gösterecektir - bu sorun MongoDB projeksiyonunun yardımıyla çözülür .
İçindekiler
MongoDB'de Projeksiyon nedir?
MongoDB'deki projeksiyon , verilerin çıktısını hepsini göstermek yerine belirtilen alanlarla sınırlar. Bu, find() yönteminin yardımıyla yapılır. find() yöntemi, belirli çıktı alanlarını dahil etmemize veya hariç tutmamıza izin veren isteğe bağlı bir parametreyi kabul eder. MongoDB'de projeksiyonun nasıl kullanılacağını derinlemesine inceleyelim .
Find() Yönteminin Sözdizimi
MongoDB'de projeksiyon , sözdizimi şu şekilde olan find() yönteminin yardımıyla yapılır:
db. koleksiyon_adı .find({}, { field_Key:1 veya 0 })
Yukarıdaki sözdiziminde, koleksiyon_adı , veri almamız gereken belgedir. Daha sonra find() yönteminde iki parametre vardır - ilki bir sorguyu kabul eder ve ikincisi projeksiyon için kullanılır. Söz dizimindeki field_Key , dahil etmek veya hariç tutmak istediğimiz alanın adıdır.

Her field_ Key için bir boole değeri iletmemiz gerekiyor . Bu değer, alanı dahil etmek mi yoksa hariç tutmak mı istediğimizi tanımlar. Bir alana karşı 1 girersek sonuçlarda gösterilir, 0 eklersek gizlenir.
örnek veritabanı
Bu makale boyunca ona başvurabilmemiz için bir veritabanında örnek bir belge oluşturalım.
db.example.studentData([
{_id: ObjectId(“59kf63795bc1d”), öğrenci_adı: “İskender”, öğrenci_kimliği: 01, öğrenci durumu: “A”, öğrenci yaşı: 22}
{_id: ObjectId(“59ke62794bc1d”), öğrenci_adı: “Steve”, öğrenci kimliği: 02, öğrenci durumu: “A”, öğrenci yaşı: 23}
{_id: ObjectId(“59kg73795bf1e”), öğrenci_adı: “Luke”, öğrenci kimliği: 03, öğrenci durumu: “A”, öğrenci yaşı: 21}
{_id: ObjectId(“59kb69995ah1d”), öğrenci_adı: “Bravo”, öğrenci kimliği: 04, öğrenci durumu: “B”, öğrenci yaşı: 25}
])
Bu, tüm örneklerimizde referans olarak kullanacağımız example adlı veritabanı belgemizdir.
MongoDB'de projeksiyonlu ve projeksiyonsuz veri alma
1. Projeksiyon olmadan almak için sözdizimi
Student_status: “A” olan öğrencilerin tüm alanları (projeksiyon kullanmayarak) alınıyor.
db.example.find({öğrenci_durumu: “A”})
Bu, SQL'deki WHERE Student_status = “A” sorgusundan Select *'ye karşılık gelir. MongoDB'de projeksiyonsuz veri almak aşağıdaki sonucu verecektir:
{“_id”: ObjectId(“59kf63795bc1d”), “öğrenci_adı”: “İskender”, “öğrenci_kimliği”: 01, “öğrenci_durumu”: “A”, öğrenci yaşı: 22}
{“_id”: ObjectId(“59ke62794bc1d”), “student_name”: “Steve”, “student_id”: 02, “student_status”: “A”, “student_age”: 23}
{“_id”: ObjectId(“59kg73795bf1e”), “student_name”: “Luke”, “student_id”: 03, “student_status”: “A”, öğrenci_yaşı: 21}
Varsayılan olarak, öğrenci_statusunun = “A” olduğu verilerin tüm alanlarını görüntüler. Çıktı alanlarını sınırlamak için MongoDB'de projeksiyon kullanabiliriz .
2. Projeksiyonla almak için sözdizimi
Tüm öğrencilerin öğrenci_adı ve öğrenci_durumu alınıyor.
db.example.find({}, {öğrenci_adı: 1, öğrenci_durumu: 1})
Bu, aşağıdaki sonucu gösterecektir:
{“_id”: ObjectId(“59kf63795bc1d”), “öğrenci_adı”: “İskender”, “öğrenci_statüsü”: “A”}

{“_id”: ObjectId(“59ke62794bc1d”), “öğrenci_adı”: “Steve”, “öğrenci_durumu”: “A”}
{“_id”: ObjectId(“59kg73795bf1e”), “öğrenci_adı”: “Luke”, “öğrenci_durumu”: “A”}
{“_id”: ObjectId(“59kb69995ah1d”), öğrenci_adı: “Bravo”, öğrenci durumu: “B”}
_id, biz bastırmadıkça , MongoDB'de projeksiyon kullanılırken varsayılan olarak gösterilir .
MongoDB'de projeksiyon kullanılırken _id bastırılması
Varsayılan _id'nin bastırılması ve tüm öğrencilerin öğrenci_kimliği, öğrenci_adı ve öğrenci_statusunun gösterilmesi.
db.example.find({}, {_id: 0, öğrenci_kimliği: 1, öğrenci_adı: 1, öğrenci_durumu: 1})
Bu, aşağıdaki sonucu üretecektir:
{"student_id": 01, "student_name": "İskender", "student_status": "A"}
{"öğrenci_kimliği": 02, "öğrenci_adı": "Steve", "öğrenci_durumu": "A"}
{"student_id": 03, "student_name": "Luke", "student_status": "A"}
{"öğrenci_kimliği": 04, "öğrenci_adı": "Bravo", öğrenci_durumu: "B"}
3. Dahil Etme ve Dışlamanın Birleştirilmesi
Tüm öğrencilerin öğrenci_adı ve öğrenci_durumu dahil, _id ve öğrenci_kimliği hariç.
db.example.find({}, {_id: 0, öğrenci_kimliği: 0, öğrenci_adı: 1, öğrenci_durumu: 1})
Bu, aşağıdaki sonucu üretecektir:
Hata: hata: {
“waitedMS” : NumberLong(0),
"tamam" : 0,
"errmsg" : "Yansıtma, dahil etme ve hariç tutma karışımına sahip olamaz.",
"kod" : 2
}
MongoDB projeksiyonunu kullanırken dahil etme ve hariç tutmayı birleştirmek , her ikisini de aynı sorguda gerçekleştiremeyeceğimiz için bir hata verecektir. _id alanı bu kuralın bir istisnasıdır.
Önceki örneğimizde dahil etme ve hariç tutmanın bir kombinasyonunu kullandığımızı fark etmişsinizdir, burada _id öğesini bastırdık ve diğer bazı alanları gösterdik ve iyi çalıştı. Kuralın istisnası nedeniyle, _id'yi hariç tuttuk ve geri kalan alanları dahil ettik.
4. MongoDB'de Projeksiyonu Hariç Tutarak Belirtme
Tüm öğrencilerin _id ve öğrenci_statusları hariç ve diğer alanlar gösteriliyor.
db.example.find({}, {_id: 0, öğrenci_status: 0})
{"öğrenci_adı": "İskender", "öğrenci_kimliği": 01, "öğrenci_yaşı": 22}
{"öğrenci_adı": "Steve", "öğrenci_kimliği": 02, "öğrenci_yaşı": 23}
{"student_name": "Luke", "student_id": 03, "student_age": 21}
{"öğrenci_adı": "Bravo", "öğrenci_kimliği": 04, "öğrenci_yaşı": 25}
Çıktı alanlarını sınırlamak için dört projeksiyon operatörünü de kullanabilirsiniz, ancak bunlar find() yöntemi tarafından desteklenmez. Kullanılabilen projeksiyon operatörleri- $, $elemMatch, $slice ve $meta'dır.

Ayrıca Okuyun: MongoDB Gerçek Dünya Kullanım Örnekleri
Çözüm
MongoDB'de projeksiyon kullanımıyla , gerçek dünyadaki kullanım durumlarını artıran verileri ön uçta gösterme kontrolünü ele alabiliriz . MongoDB son yıllarda birkaç dönüm noktasına ulaştı. Bu, MongoDB'nin gelecekteki kapsamını parlak hale getirdi ve çok sayıda işletme, MongoDB bilgisine sahip tam yığın geliştiriciler arıyor.
Bu nedenle şimdi, MongoDB'nin becerilerini özgeçmişinize dahil etmek için harika bir zaman. Ancak günümüzün rekabetçi dünyasında sadece bir veritabanını yönetmek yeterli değildir. Bu nedenle, tam kapsamlı bir geliştirici olmayı veya yönettiğiniz verileri anlamak ve analiz etmek ve işletmelerin iyi performans göstermesine yardımcı olmak için iş analitiği öğrenmeyi hedefliyorsanız, bu yardımcı olacaktır. upGrad başlamanıza yardımcı olabilir.
upGrad olarak, uygulamalı deneyim ve iş yardımı ile birlikte ayrıntılı öğrenme kaynakları sağlıyoruz. Size en iyi eğitim ve sertifikayı sağlamak için birden fazla enstitü ile işbirliği yaptık. İş Analitiği sertifika kursuna katılmak isteyip istemediğinizi veya Full-stack yazılım geliştirme PG Diploma kursuna gitmeyi seçebilirsiniz . Hayatında bir kariyer olarak ne yapmak istersen, seni koruduk.
Dünyanın En İyi Üniversitelerinden Online Yazılım Geliştirme Kursları öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.
