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

bul*_*ley 3 php mongodb

我使用的是PHP mongo命令:

$db->command(array("create" => $name, "size" => $size, "capped" => true, "max" => $max));
Run Code Online (Sandbox Code Playgroud)

我的收藏品超过了他们所谓的上限.我做了一个修复:

$db->createCollection($name, true, $size, $max);
Run Code Online (Sandbox Code Playgroud)

目前,计数是如此之低,我无法判断'修复'是否有效.

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

bul*_*ley 6

结果还有isCapped()函数.

db.foo.isCapped()
Run Code Online (Sandbox Code Playgroud)


Rob*_*art 5

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

> db.my_collection.stats()["capped"]
1
Run Code Online (Sandbox Code Playgroud)

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

以下是 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
}
Run Code Online (Sandbox Code Playgroud)

这是 MongoDB 1.7.4。

  • JavaScript 集合对象上现在有一个 isCapped() 方法:`> db.my_coll.isCapped()` (3认同)