Nếu bạn không quan tâm đến thứ tự chúng xuất hiện, bạn có thể xây dựng hai mảng user1 và user2, sau đó nối chúng lại với nhau trong giai đoạn sau. Tuy nhiên, điều này sẽ không xử lý việc khử trùng lặp.
$chatUserID = $_POST["chatUserID"]; // 2 in my example
$chatCursor = $chatCollection->aggregate([
[
'$match' => [
'$or' =>[
["chatUser1ID" => $chatUserID],
["chatUser2ID" => $chatUserID]
]
]
], [
'$group' => [
'_id' => 0,
'chatUsers1' => ['$addToSet' => '$chatUser1ID'],
'chatUsers2' => ['$addToSet' => '$chatUser2ID'],
]
], [
'$addFields' => [
'chatUsers' => [
'$concatArrays' => [
'$chatUsers1',
'$chatUsers2'
]
]
]
],
]);