我使用的是PHP mongo命令:
$db->command(array("create" => $name, "size" => $size, "capped" => true, "max" => $max));
我的收藏品已超过他们假设的上限。我提出了修正案:
$db->createCollection($name, true, $size, $max);
目前,计数非常低,我无法确定'修复'是否有效。
如何通过shell或PHP来判断集合是否有上限?我无法在system.namespaces中找到此信息。
答案 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']);