sql >> Databáze >  >> NoSQL >> MongoDB

PHP MongoDB agreguje $match a $group a $addToSet

Pokud vám nezáleží na pořadí, v jakém se objeví, můžete sestavit dvě pole user1 a user2 a poté je spojit dohromady v pozdější fázi. Toto však deduplikaci nezvládne.

$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. Meteorická metoda vs. pravidla zakázat/povolit

  2. Mohu vytvořit databázi rubínových tříd?

  3. Kurzor MongoDB se automaticky zvětší, když přidám dokumenty

  4. Vytvoření částečného indexu, když pole není null