Sorgu Oluşturucu
DocStore ve SegmentedLog, query() sunar. DocStore ikincil dizinleri kullanabilir; SegmentedLog aynı koşulları akış halindeki kayıtlar üzerinde uygular.
$records = $docs
->query()
->where('kind')->eq('page')
->where('status')->in(['draft', 'published'])
->where('publishedAt')->between($from, $until)
->orderBy('publishedAt', 'desc')
->limit(50)
->get();
Yararlı son işlem yöntemleri:
$docs->query()->where('slug')->eq('home')->first();
$docs->query()->where('kind')->eq('page')->count();
$docs->query()->cursor($lastId)->page(100)->get();
$docs->query()->where('slug')->eq('home')->explain();
DocStore üzerinde, benzersiz olmayan ve eşitlik dizinli alanlara uygulanan iki eq koşulu otomatik bir bileşik kovayı kullanabilir. Tekli eşitlik, in ve aralık işleçleri yapılandırılmış alan dizinlerini kullanmaya devam eder.
İşleçler:
eq,neqin,notIngt,gte,lt,lte,betweenexists,missingprefixandWhere,orWhereorderBy,limit,cursor,page
andWhere ve orWhere geri çağırım kullanır; çünkü and ve or, PHP anahtar sözcükleri olarak ayrılmıştır:
$docs->query()
->where('kind')->eq('page')
->orWhere(fn ($q) => $q->where('kind')->eq('post')->where('featured')->eq(true))
->get();
Zincirlenmiş where() çağrıları VE ile birleştirilir; her orWhere() dalı bir alternatif ekler.
Nasıl yürütülür?
Her koşul her koleksiyonda çalışır; dizinler yalnızca maliyeti değiştirir.
DocStore üzerinde eq ve in eşitlik dizinleriyle, aralık işleçleri ve prefix aralık dizinleriyle çözümlenir; orderBy ve aralık dizinli bir alandaki limit ise dizin sırasıyla okur. Diğer her şey kayıt taramasını filtreler. Planlayıcının dizin üzerinden sunamadığı bir alandaki orderBy, eşleşen kayıtları PHP içinde sıralar; bu nedenle büyük koleksiyonlarda bunu dizinlenmiş koşullarla birlikte kullanın. Filtre tek bir eşitlik olduğunda count(), DocStore üzerindeki dizin girdisi sayılarını ve SegmentedLog üzerindeki bellek sayaçlarını kullanır.
cursor($id) sonuçları kimlikten sonraki kayıtlarla sınırlar; kararlı sayfalama için kayıt kimliğine göre sıralanan page() ile birlikte kullanılabilir. Oluşturucu olmadan uygulanan düz akış filtreleri için Sorgular sayfasına bakın.