MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

PHP MongoDB agrège $match et $group et $addToSet

Si vous ne vous souciez pas de l'ordre dans lequel ils apparaissent, vous pouvez créer deux tableaux de user1 et user2, puis les concaténer ultérieurement. Cependant, cela ne gérera pas la déduplication.

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