SORU
14 Mart 2012, ÇARŞAMBA


MongoDB sayfa arasında değişiyordu

Atla kullanarak söylenir. () MongoDB içinde sayfa numaralandırması için birçok kayıtları ile koleksiyonu yavaş ve tavsiye edilmez.

Sayfa ( >göre değişiyordu Karşılaştırılması _ıd) kullanılabilir

db.items.find({_id: {$gt: ObjectId('4f4a3ba2751e88780b000000')}});

Önceki görüntülenmesi için iyi değil. ve sonraki düğmeleri - ama çok da kolay uygulamak görüntülemek istediğinizde gerçek sayfa numaraları 1 ... 5 6 7 ... 124 - önceden hesaplamak olan "_ıd" her bir sayfa başlar.

İki sorum var:

Ne Zaman başlayayım 1) Bu konuda endişe? Var, "çok fazla kayıt" atlamak için fark yavaşlama ile()? 1 000? 1 000 000?

2) Ne değişiyordu sayfa numaralarını kullanarak gerçek sayfa numaraları ile bağlantıları göstermek için en iyi yaklaşım nedir?

CEVAP
14 Mart 2012, ÇARŞAMBA


Güzel soru!

"Ne kadar çok?" - bu, tabii ki, boyut ve performans gereksinimlerini veri bağlıdır. Ben, kişisel olarak, ben daha fazla 500-1000 kayıtları daha atlamak zaman rahatsız hissediyorum.

Gerçek cevap gereksinimlerinize bağlıdır. Burada modern siteler ne yapar (ya da en azından bazıları).

İlk, gezinti çubuğu bu gibi görünüyor:

1 2 3 ... 457

Toplam kayıt sayısı son sayfa numarası ve sayfa boyutu. Sayfa 3'e atlayalım. Bazı ilk kaydından atlama içerir. Sonuçlar geldiğinde, Sayfa 3 ilk kaydın ıd biliyorsun.

1 2 3 4 5 ... 457

Biraz daha geçelim ve git Sayfa 5 için.

1 ... 3 4 5 6 7 ... 457

Siz anladınız. Her noktada ilk, son ve geçerli sayfalarını görmek, ve ileri ve geri akım sayfasından da iki sayfa.

Sorgular

var current_id; // id of first record on current page.

// go to page current N
db.collection.find({_id: {$gt: current_id}}).
              skip(N * page_size).
              limit(page_size).
              sort({_id: 1});

// go to page current-N
db.collection.find({_id: {$lt: current_id}}).
              skip((N-1)*page_size).
              limit(page_size).
              sort({_id: 1});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BlackmillMusic

    BlackmillMus

    3 Kasım 2010
  • Good Creative Academy

    Good Creativ

    19 Kasım 2009
  • MrDevin521

    MrDevin521

    18 Temmuz 2010