2011-01-18 2 views
3

я использовал команду PHP Монго:Как вы можете определить, закрыта ли коллекция?

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

А мои коллекции выросли путь мимо их предполагаемых блокированных пределов. Я положил на исправление:

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

В настоящее время на счету настолько малы, что я не могу сказать, является ли работал «исправить».

Как вы можете определить, ограничена ли коллекция оболочкой или PHP? Я не смог найти эту информацию в пространстве имен system.names.

ответ

4

В оболочке используйте db.collection.stats(). Если набор ограничен:

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

Если коллекция не накрыта, ключ «ограничен» не будет присутствовать.

Ниже приведены примеры результаты статистики() для блокированного коллекции:

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

+3

Существует в настоящее время метод isCapped() на объекте коллекции JavaScript: '> db.my_coll.isCapped()' –

2

Из оболочки:

db.system.namespaces.find() 

Вы увидите список всех коллекций и индексов для данной БД. Если коллекция закрыта, это будет указано.

0

Для PHP:

$collection = $db->selectCollection($name); 
$result = $collection->validate(); 
$isCapped = isset($result['capped']); 
Смежные вопросы