sql >> Databasteknik >  >> NoSQL >> MongoDB

PHP MongoDB sammanställer $match och $group och $addToSet

Om du inte bryr dig om ordningen de visas i kan du bygga två arrayer av användare1 och användare2, och sedan sammanfoga dem i ett senare skede. Detta kommer dock inte att hantera deduplicering.

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



  1. MongoDB skillnad mellan $orderby och Sort

  2. Mongodb:returnerar matchade filter när du använder $or i find()

  3. MongoDB-fråga på ifyllda fält

  4. Hur får jag _id för det nyligen infogade dokumentet efter en infogning med mongo csharp?