MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

PHP MongoDB agregacja $match i $group oraz $addToSet

Jeśli nie zależy Ci na kolejności, w jakiej się pojawiają, możesz zbudować dwie tablice user1 i user2, a następnie połączyć je ze sobą na późniejszym etapie. To jednak nie obsługuje deduplikacji.

$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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Znajdź obiekty między dwiema datami MongoDB

  2. Dlaczego otrzymuję nierozpoznany argument do dateFromString:„format” pomimo posiadania wersji db> 3.6, która obsługuje agregację

  3. Mongodb i odpytywanie, że wyszukiwanie wielokątów przecina wielokąt

  4. jak bezpiecznie zaktualizować numer sekwencyjny w mongodb

  5. Jak wykonać kopię zapasową i przywrócić ClusterControl