четверг, 24 марта 2011 г.

MongoDB обновление множества записей

Обнаружил неприятную особенность. При частом использовании:

update(
    query={Field:{$in:[x],$nin:[y]}},
    update={$addToSet:{Field:z}},
    multi=true
}

монго плодит кучу под-процессов (и соединений) и сильно лочит коллекцию. Что приводит к 90% локу и зависанию скрипта.

Скрипт - в цикле обновляет поля.

Помогает использование вместо мулти-обновления - обновления каждой записи по одной (под-цикл в скрипте).

Комментариев нет: