protected function _buildCondition($property, $condition, $value) {
		switch ($condition) {
			// var = ?
			case self::COND_EQUAL:
				return [$property => $value];
			
			// var in(?)
			case self::COND_IN:
				return [$property => [
					self::MONGO_IN => (array) $value
				]];
			
			// var not in(?)
			case self::COND_NOT_IN:
				return [$property => [
					self::MONGO_NOT_IN => (array) $value
				]];
			
			// var < ?
			case self::COND_LESS:
				return [$property => [
					self::MONGO_LESS => $value
				]];
			
			// var > ?
			case self::COND_MORE:
				return [$property => [
					self::MONGO_MORE => $value
				]];
			
			// var <= ?
			case self::COND_LESS_EQUAL:
				return array($property => array(
					self::MONGO_LESS_EQUAL => $value
				));
			
			// var >= ?
			case self::COND_MORE_EQUAL:
				return [$property => [
					self::MONGO_MORE_EQUAL => $value
				]];
			
			// var != ?
			case self::COND_NOT_EQUAL:
			case self::COND_NOT_EQUAL_ALT:
				return [$property => [
					self::MONGO_NOT_EQUAL => $value
				]];
			
			// var in array(?)
			case self::COND_IN_ARRAY:
				return [$property => [
					self::MONGO_IN_ARRAY => (array) $value
				]];
			
			// var exists(?)
			case self::COND_EXISTS:
				return [$property => [
					self::MONGO_EXISTS => $value
				]];
			
			// var type(?)
			case self::COND_TYPE:
				return [$property => [
					self::MONGO_TYPE => $value
				]];
				
			// var is array()
			case self::COND_IS_ARRAY:
				return [$property => [
					self::MONGO_TYPE => self::MONGO_TYPE_ARRAY
				]];
			
			// var is int()
			case self::COND_IS_INT:
				return [$property => [
					self::MONGO_TYPE => self::MONGO_TYPE_INT32
				]];
			
			// var is string()
			case self::COND_IS_STRING:
				return [$property => [
					self::MONGO_TYPE => self::MONGO_TYPE_STRING
				]];
			
			// var is bool()
			case self::COND_IS_BOOL:
				return [$property => [
					self::MONGO_TYPE => self::MONGO_TYPE_BOOLEAN
				]];
			
			// var is null()
			case self::COND_IS_NULL:
				return [$property => [
					self::MONGO_TYPE => self::MONGO_TYPE_NULL
				]];
			
			// var regexp(?)
			case self::COND_REGEXP:
				return [$property => new MongoRegex($value)];
			
			// var like ?
			case self::COND_LIKE:
				$regex = preg_quote(trim($value, '%'));
				
				if ($value[0] !== '%') {
					$regex = '^' . $regex;
				}
				
				if ($value[strlen($value) - 1] !== '%') {
					$regex .= '$';
				}
				
				return [$property => new MongoRegex('/' . $regex . '/')];
				
			// var array size ?
			case self::COND_ARRAY_COUNT:
			case self::COND_ARRAY_COUNT_ALT:
				return [$property => [
					self::MONGO_SIZE => $value
				]];
			
			default:
				throw new Exception('Uncnown condition: "' . $condition . '"');
		}
	}