MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

PHP MongoDB aggregiert $match und $group und $addToSet

Wenn Sie sich nicht um die Reihenfolge kümmern, in der sie erscheinen, können Sie zwei Arrays von user1 und user2 erstellen und sie dann zu einem späteren Zeitpunkt zusammenfügen. Dies wird jedoch nicht mit der Deduplizierung umgehen.

$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'
                 ]
            ]
         ]
    ],
]);