private function buildCompositeInCondition($operator, $columns, $values)
{
$result = [];
$inValues = [];
foreach ($values as $columnValues) {
foreach ($columnValues as $column => $value) {
if ($column == '_id') {
$value = $this->ensureMongoId($value);
}
$inValues[$column][] = $value;
}
}
foreach ($columns as $column) {
$columnInValues = array_values($inValues[$column]);
if (count($columnInValues) === 1 && $operator === '$in') {
$result[$column] = $columnInValues[0];
} else {
$result[$column][$operator] = $columnInValues;
}
}
return $result;
}