Forespørgselsbygger
DocStore og SegmentedLog stiller query() til rådighed. DocStore kan bruge sekundære
indekser; SegmentedLog anvender de samme betingelser på streamede poster.
$records = $docs
->query()
->where('kind')->eq('page')
->where('status')->in(['draft', 'published'])
->where('publishedAt')->between($from, $until)
->orderBy('publishedAt', 'desc')
->limit(50)
->get();
Nyttige terminalmetoder:
$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();
På DocStore kan to eq-betingelser på ikke-unikke felter med lighedsindeks
bruge en automatisk sammensat bucket. Enkelt lighed, in og intervaloperatorer
fortsætter med at bruge deres konfigurerede feltindekser.
Operatorer:
eq,neqin,notIngt,gte,lt,lte,betweenexists,missingprefixandWhere,orWhereorderBy,limit,cursor,page
andWhere og orWhere bruger callbacks, fordi and og or er reserverede PHP-nøgleord:
$docs->query()
->where('kind')->eq('page')
->orWhere(fn ($q) => $q->where('kind')->eq('post')->where('featured')->eq(true))
->get();
Kædede where()-kald kombineres med AND; hver orWhere()-gren tilføjer et
alternativ.
Sådan udføres forespørgsler
Alle betingelser virker på alle samlinger; indekser ændrer kun omkostningen.
På DocStore løses eq og in via lighedsindekser, intervaloperatorerne og prefix løses via intervalindekser, og orderBy med
limit på et felt med intervalindeks læser i indeksrækkefølge. Alt andet
filtrerer en postscanning. orderBy på et felt, som planlæggeren ikke kan hente fra et indeks, sorterer de
matchende poster i PHP, så brug den sammen med indekserede
betingelser i store samlinger. count() bruger antal indeksindgange på DocStore og tællere i hukommelsen på SegmentedLog, når filteret er en enkelt lighed.
cursor($id) begrænser resultaterne til poster efter id'et og kan kombineres med
page() for stabil sideinddeling sorteret efter post-id. Se Forespørgsler for almindelige streamingfiltre
uden forespørgselsbyggeren.