Вот как я строю без учета регистра, "содержит" термин
$containsTerm = new MongoRegex(sprintf('/%s/i', preg_quote($term, '/')));
Так что ваше состояние может выглядеть как
$condition = array('$or' => array(
'writer.name' => $term,
'title' => $containsTerm,
'tags' => $containsTerm
));
Извинения, если массив условий неверен, я обычно использую Doctrine ODM