public function addToSetEach($field, array $values)
{
// new field
if (!isset($this->operators['$addToSet'][$field])) {
$this->operators['$addToSet'][$field]['$each'] = $values;
return $this;
}
// scalar value or array in existed field
if (!is_array($this->operators['$addToSet'][$field]) || !isset($this->operators['$addToSet'][$field]['$each'])) {
$this->operators['$addToSet'][$field] = array('$each' => array_merge(array($this->operators['$addToSet'][$field]), $values));
return $this;
}
// field already $each
$this->operators['$addToSet'][$field] = array('$each' => array_merge($this->operators['$addToSet'][$field]['$each'], $values));
return $this;
}