buley
buley

Reputation: 29278

How can you tell if a collection is capped?

I was using a PHP mongo command:

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

And my collections grew way past their supposed capped limits. I put on a fix:

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

Currently, the counts are so low I can't tell whether the 'fix' worked.

How can you tell if a collection is capped, either from the shell or PHP? I wasn't able to find this information in the system.namespaces.

Upvotes: 7

Views: 5485

Answers (4)

Oleg
Oleg

Reputation: 7387

For PHP:

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

Upvotes: 0

buley
buley

Reputation: 29278

Turns out there's also the isCapped() function.

db.foo.isCapped()

Upvotes: 8

Robert Stewart
Robert Stewart

Reputation: 3330

In the shell, use db.collection.stats(). If a collection is capped:

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

If a collection is not capped, the "capped" key will not be present.

Below are example results from stats() for a capped collection:

> 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
}

This is with MongoDB 1.7.4.

Upvotes: 7

Kyle Banker
Kyle Banker

Reputation: 4359

From the shell:

  db.system.namespaces.find()

You'll see a list of all collections and indexes for the given db. If a collection is capped, that will be indicated.

Upvotes: 3

Related Questions