7 Stimmen

Woran erkennt man, dass eine Sammlung gedeckelt ist?

Ich habe einen PHP-Mongo-Befehl verwendet:

$db->command(array("create" => $name, "size" => $size, "capped" => true, "max" => $max));

Und meine Sammlungen wuchsen weit über ihre vermeintliche Obergrenze hinaus. Ich habe eine Lösung gefunden:

$db->createCollection($name, true, $size, $max);

Derzeit sind die Zahlen so niedrig, dass ich nicht sagen kann, ob die "Korrektur" funktioniert hat.

Wie können Sie feststellen, ob eine Sammlung gekappt ist, entweder von der Shell oder von PHP aus? Ich konnte diese Information nicht in der Datei system.namespaces.

8voto

buley Punkte 26263

Es stellt sich heraus gibt es auch die Funktion isCapped().

db.foo.isCapped()

7voto

Robert Stewart Punkte 3250

In der Shell verwenden Sie db.collection.stats(). Wenn eine Sammlung gekappt ist:

> db.my_collection.stats()["capped"]
1

Wenn eine Sammlung nicht gedeckelt ist, ist der Schlüssel "gedeckelt" nicht vorhanden.

Nachfolgend sind Beispielergebnisse von stats() für eine gekappte Sammlung aufgeführt:

> db.my_coll.stats()
{
    "ns" : "my_db.my_coll",
    "count" : 221,
    "size" : 318556,
    "avgObjSize" : 1441.4298642533936,
    "storageSize" : 1000192,
    "numExtents" : 1,
    "nindexes" : 0,
    "lastExtentSize" : 1000192,
    "paddingFactor" : 1,
    "flags" : 0,
    "totalIndexSize" : 0,
    "indexSizes" : {

    },
    "capped" : 1,
    "max" : 2147483647,
    "ok" : 1
}

Dies ist mit MongoDB 1.7.4.

3voto

Kyle Banker Punkte 4339

Aus der Schale:

  db.system.namespaces.find()

Sie erhalten eine Liste aller Sammlungen und Indizes für die angegebene Datenbank. Wenn eine Sammlung gekappt ist, wird dies angezeigt.

0voto

Oleg Punkte 6592

Für PHP:

$collection = $db->selectCollection($name);
$result = $collection->validate();
$isCapped = isset($result['capped']);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X