MongoDB find and remove - the fastest way

У меня есть небольшой вопрос, какой быстрый способ взять и удалить объект из коллекции mongo. Вот код, который я имею на данный момент:

$cursor = $coll->find()->sort(array('created' => 1))->limit(1);
$obj = $cursor->getNext();
$coll->remove(array('name' => $obj['name']));

как вы можете видеть выше, он захватывает один документ из базы данных и удаляет его (так что он не обрабатывается снова). Как бы быстро это ни было, мне нужно, чтобы это выполнялось быстрее. Проблема в том, что у нас есть несколько процессов, выполняющих эту процедуру и обрабатывающих то, что они нашли, но иногда два или более процессов захватывают один и тот же документ, создавая дубликаты. В принципе, мне нужно сделать так, чтобы документ можно было захватить только один раз. Поэтому любые идеи будут очень признательны.

13
задан PetersCodeProblems 16 December 2011 в 20:11
поделиться