Разделы
Теги | RSS © 2008 – 2022
Контакты
email:
skype:
» » autoincrement

Автоинкремент поля Mongodb на PHP


Способ 1 когда документы коллекции только добавляются и не удаляются:
Перед вставкой считаем количество документов и добавляем единицу
$data_insert['num'] = $collection->count()+1;
$collection->insert($data_insert);
То есть всегда получаем количество документов +1. Если в таком случае удалить запись то счетчик собьется и нумерация нарушится. Поэтому используйте в том случаее когда документы не удаляются.

Способ 2 когда документы коллекции удаляются:
Создается отдельная коллекция со счетчиками и вот таким документом к примеру
$data_insert = array(
        'field' => 'user_id',
        'nextId' => 0
);
$collection = $db->selectCollection('counters');
$collection->insert($data_insert);

После чего добавление новых документов выглядит таким образом
$collection = $db->selectCollection('counters');
$retval = $collection->findAndModify(
        array('field' => 'user_id'),
        array('$inc' => array("nextId" => 1)),
        null,
        array(
                "new" => true,
        )
);
$num = $retval['nextId'];
Здесь мы добавили 1 для нашего счетчика, теперь добавляется сам документ
$collection = $db->selectCollection('users');
$data_insert['num'] = $num;
$collection->insert($data_insert);

Создасться запись с полем num = 1, следующая num = 2 и тд.

Теперь когда удалится документ, счетчик не собьется, а продолжит работать и добавлять 1 при добавлении.
Вверх