如何判断集合是否有上限?

时间:2011-01-18 00:34:00

标签: php mongodb

我使用的是PHP mongo命令:

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

我的收藏品已超过他们假设的上限。我提出了修正案:

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

目前,计数非常低,我无法确定'修复'是否有效。

如何通过shell或PHP来判断集合是否有上限?我无法在system.namespaces中找到此信息。

4 个答案:

答案 0 :(得分:6)

Turns out还有isCapped()函数。

db.foo.isCapped()

答案 1 :(得分:4)

在shell中,使用db.collection.stats()。如果集合有上限:

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

如果集合没有上限,则“上限”键将不存在。

以下是有关上限集合的stats()的示例结果:

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

这是MongoDB 1.7.4。

答案 2 :(得分:2)

来自shell:

  db.system.namespaces.find()

您将看到给定数据库的所有集合和索引的列表。如果集合有上限,则会显示。

答案 3 :(得分:0)

对于PHP:

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