public function addToSet($field, $value)
{
// new field
if (!isset($this->operators['$addToSet'][$field])) {
$this->operators['$addToSet'][$field] = $value;
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($this->operators['$addToSet'][$field], $value));
return $this;
}
// field already $each
$this->operators['$addToSet'][$field]['$each'][] = $value;
return $this;
}