Forum: Diğer Konular RSS
MongoDB çeviri yardımı
erdem (Moderatör) #1
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: MongoDB çeviri yardımı
Mongo veritabanı ile ağaç yapısının nasıl kullanılacağına dair bir yazı okuyordum.

Operating with the Tree

This is pretty simple, but changing the position of the node within siblings will require additional calculations.
You might want to set high numbers like item position * 10^6 for the order so you can set a new node order as trunc (lower sibling order - higher sibling order)/2 - this will give you enough operations until you need to traverse whole the tree and set the order defaults to big numbers again.

Bu bölümü açıklayabilecek var mı acaba.

Ben örneğin buradaki örnekte Elektronik bölümü altındaki bölümler için

Fotoğraf Makinesi, Fotoğrafçılık Aksesuarları 10
En Çok Satılanlar 20
Cep Telefonu ve Aksesuarları 30

şeklinde sıra numarası veriyorum. Ya da işte En çok Satılanlar bölümü içerisindeki

Ipad 10
Iphone 20
Ipod 30
Blackberry 40

içinde gene aynı sıralamayı yapıyorum. Acaba burada ne anlatmak istemiş olabilirler.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Sanırım zamanında Basic dilinde satırları onar onar numaralandırdığımıza benzer biçimde, düğümlerin aralıklı olarak numaralandırılmalarından bahsediyorlar. Öyle yaparsak düğümleri kaydırmak için yerimiz oluyor. Örneğin, bir düğümü 10 ile 20 düğümleri arasına kaydırmak için (10+20)/2==15 buluyoruz.

Bunun dışında bir şey anlamıyorum. :)

Ali
erdem (Moderatör) #3
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ben de çok daha değişik bir şey yaptım.

[Resim: https://image.ibb.co/hvLrhb/mongotree.png]

Şimdi bu şekilde bir ağacımız var diyelim. Bir dügümün tüm alt düğümlerini belirli bir sırayla nasıl bulabiliriz diye düşünüyordum.

Örneğin 0 numaralı düğümün tüm alt düğümlerini bulmak istiyoruz ama şu sırayla:

[0, 1, 4, 5, 6, 7, 2, 8, 9, 10, 11, 3, 12, 16, 17, 18, 19, 13, 14, 15]

Neden bu sırayla olduğuna gelince bunlar aslında Reddit tarzı içiçe geçmiş bir yorum sistemi diye düşünebiliriz. Bunları ekrana basmak için de en mantıklı sıralama yukarıdaki gibi geldi.

Mongodb kullanarak ağaç düğümlerini de şu şekilde oluşturdum.

{ "_id" : 0, "sıra" : 10000000, "derinlik" : 0, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.040+0000" }, "soruno" : 1, "üst" : null, "içerik" : "kök" }
{ "_id" : 1, "sıra" : 1000000, "derinlik" : 1, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.057+0000" }, "soruno" : 1, "üst" : 0, "içerik" : "Bu ilk yanıtdır" }
{ "_id" : 2, "sıra" : 2000000, "derinlik" : 1, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.062+0000" }, "soruno" : 1, "üst" : 0, "içerik" : "Bu ikinci yanıtdır" }
{ "_id" : 3, "sıra" : 3000000, "derinlik" : 1, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.067+0000" }, "soruno" : 1, "üst" : 0, "içerik" : "Bu üçüncü yanıtdır" }
{ "_id" : 4, "sıra" : 100000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.072+0000" }, "soruno" : 1, "üst" : 1, "içerik" : "Dördüncü yanıt" }
{ "_id" : 5, "sıra" : 200000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.085+0000" }, "soruno" : 1, "üst" : 1, "içerik" : "Beşinci yanıt" }
{ "_id" : 6, "sıra" : 300000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.099+0000" }, "soruno" : 1, "üst" : 1, "içerik" : "Altıncı yanıt" }
{ "_id" : 7, "sıra" : 400000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.113+0000" }, "soruno" : 1, "üst" : 1, "içerik" : "Yedinci yanıt" }
{ "_id" : 8, "sıra" : 100000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.126+0000" }, "soruno" : 1, "üst" : 2, "içerik" : "Sekizinci yanıt" }
{ "_id" : 9, "sıra" : 200000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.140+0000" }, "soruno" : 1, "üst" : 2, "içerik" : "Dokuzuncu yanıt" }
{ "_id" : 10, "sıra" : 300000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.153+0000" }, "soruno" : 1, "üst" : 2, "içerik" : "Onuncu yanıt" }
{ "_id" : 11, "sıra" : 400000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.167+0000" }, "soruno" : 1, "üst" : 2, "içerik" : "Onbirinci yanıt" }
{ "_id" : 12, "sıra" : 100000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.183+0000" }, "soruno" : 1, "üst" : 3, "içerik" : "Onikinci yanıt" }
{ "_id" : 13, "sıra" : 200000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.218+0000" }, "soruno" : 1, "üst" : 3, "içerik" : "Onüçüncü yanıt" }
{ "_id" : 14, "sıra" : 300000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.237+0000" }, "soruno" : 1, "üst" : 3, "içerik" : "Ondördüncü yanıt" }
{ "_id" : 15, "sıra" : 400000, "derinlik" : 2, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.249+0000" }, "soruno" : 1, "üst" : 3, "içerik" : "Onbeşinci yanıt" }
{ "_id" : 16, "sıra" : 10000, "derinlik" : 3, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.261+0000" }, "soruno" : 1, "üst" : 12, "içerik" : "Onaltıncı yanıt" }
{ "_id" : 17, "sıra" : 20000, "derinlik" : 3, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.275+0000" }, "soruno" : 1, "üst" : 12, "içerik" : "Onyedinci yanıt" }
{ "_id" : 18, "sıra" : 30000, "derinlik" : 3, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.289+0000" }, "soruno" : 1, "üst" : 12, "içerik" : "Onsekizinci yanıt" }
{ "_id" : 19, "sıra" : 40000, "derinlik" : 3, "oluşturmazamanı" : { "$date" : "2017-11-01T19:23:09.303+0000" }, "soruno" : 1, "üst" : 12, "içerik" : "Ondokuzuncu yanıt" }

Dikkat ederseniz derinlik azaldıkça 10^7 den başlamak üzere azalarak bir katsayıyla çarpılıyor. Bu sıralamayı bulabilmek  için de sıra numarası en küçük olan elemanı çıkartacak bir öncelikli kuyruk kullandım.

İlginç bir şekilde bu da daha önce konuştuğumuz 8 bilmece probleminin çözümüyle aynı (ya da çok benzer) yöntemi kullanıyor.
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-18, 07:50:45 (UTC -08:00)