Как вы можете определить, ограничена ли коллекция? - PullRequest
3 голосов
/ 18 января 2011

Я использовал команду PHP mongo:

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

И мои коллекции выросли далеко за их предполагаемые ограниченные пределы. Я исправил:

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

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

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

Ответы [ 4 ]

6 голосов
/ 13 августа 2011

Оказывается есть также функция isCapped ().

db.foo.isCapped()
4 голосов
/ 18 января 2011

В оболочке используйте 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 голосов
/ 18 января 2011

Из оболочки:

  db.system.namespaces.find()

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

0 голосов
/ 27 декабря 2011

Для PHP:

$collection = $db->selectCollection($name);
$result = $collection->validate();
$isCapped = isset($result['capped']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...