Start · Sprachen · PHP · Referenz · MongoDB\BSON\MinKey

MongoDB\BSON\MinKey

Klasse

Repräsentiert den BSON-Typ <code>MinKey</code>, der stets kleiner als jeder andere BSON-Wert ist und für Bereichsabfragen verwendet wird.

seit PHP 1.0.0 Kategorie: db

Signatur

class MongoDB\BSON\MinKey implements MongoDB\BSON\Type, Serializable, JsonSerializable

Beschreibung

MongoDB\BSON\MinKey ist ein spezieller BSON-Datentyp, der den kleinstmöglichen Wert innerhalb der BSON-Typordnung darstellt. Er liegt in der BSON-Vergleichsreihenfolge unterhalb aller anderen Typen – einschließlich null, Zahlen, Zeichenketten und sogar Arrays. Sein Gegenstück ist MongoDB\BSON\MaxKey, der den größtmöglichen Wert repräsentiert.

Typischer Einsatz ist das Definieren von Untergrenzen bei Bereichsabfragen oder beim Sharding. Möchte man beispielsweise alle Dokumente ab dem kleinstmöglichen Wert eines Feldes abrufen, kann man MinKey als untere Schranke angeben, ohne den tatsächlichen Minimalwert des Feldes kennen zu müssen.

Die Klasse hat keinen Konstruktor-Parameter – ein MinKey-Objekt wird einfach mit new MongoDB\BSON\MinKey() erzeugt. Es implementiert MongoDB\BSON\Type, sodass der PHP-Treiber es beim Schreiben in die Datenbank automatisch korrekt serialisiert.

Beim Lesen aus der Datenbank deserialisiert der Treiber BSON-MinKey-Werte ebenfalls automatisch in Instanzen dieser Klasse, sofern keine eigene Typemap konfiguriert wurde.

Beispiele

MinKey-Objekt erstellen und in MongoDB speichern

<?php
require 'vendor/autoload.php';

$client = new MongoDB\Client('mongodb://localhost:27017');
$collection = $client->testdb->preise;

// Dokument mit MinKey als untere Preisgrenze speichern
$collection->insertOne([
    'name'       => 'Starterpaket',
    'preis_ab'   => new MongoDB\BSON\MinKey(),
    'preis_bis'  => 99.99,
]);

echo "Dokument mit MinKey erfolgreich gespeichert.";
Dokument mit MinKey erfolgreich gespeichert.

Bereichsabfrage mit MinKey als untere Schranke

<?php
require 'vendor/autoload.php';

$client = new MongoDB\Client('mongodb://localhost:27017');
$collection = $client->testdb->produkte;

// Alle Dokumente, deren Preis zwischen MinKey und 500 liegt
$cursor = $collection->find([
    'preis' => [
        '$gte' => new MongoDB\BSON\MinKey(),
        '$lte' => 500,
    ],
]);

foreach ($cursor as $dokument) {
    echo $dokument['name'] . ': ' . $dokument['preis'] . PHP_EOL;
}

MinKey aus BSON-Dokument lesen und Typ prüfen

<?php
require 'vendor/autoload.php';

$client = new MongoDB\Client('mongodb://localhost:27017');
$collection = $client->testdb->meta;

// Dokument mit MinKey und MaxKey speichern
$collection->insertOne([
    'untere_schranke' => new MongoDB\BSON\MinKey(),
    'obere_schranke'  => new MongoDB\BSON\MaxKey(),
]);

// Dokument wieder abrufen
$doc = $collection->findOne(['untere_schranke' => ['$type' => 'minKey']]);

if ($doc['untere_schranke'] instanceof MongoDB\BSON\MinKey) {
    echo "Untere Schranke ist MinKey – kleiner als alle anderen BSON-Werte." . PHP_EOL;
}
Untere Schranke ist MinKey – kleiner als alle anderen BSON-Werte.

// Wichtig · Fallstricke

Kein Konstruktor-Argument: MinKey akzeptiert keine Parameter – das Objekt wird immer nur mit new MongoDB\BSON\MinKey() erzeugt.

Serialisierung: MinKey implementiert JsonSerializable und gibt beim Aufruf von json_encode() ein Objekt der Form {"$minKey": 1} zurück (Extended JSON). Dies ist nützlich für Logging oder API-Ausgaben.

Vorsicht bei Abfragen: Da MinKey kleiner als alle anderen Typen ist – auch kleiner als null –, kann eine Bereichsabfrage mit $gte: MinKey unerwartete Dokumente zurückliefern, wenn das Feld in manchen Dokumenten fehlt oder null enthält.