MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Използване на агрегат за комбиниране на списък от всички поддокументи, които отговарят на заявката?

Можете да използвате агрегирането по-долу. $match за намиране на документи, където масивът има стойност Frog и $unwind pets масив. $match където документът има Frog и последната стъпка е group съвпадащите документи в масив.

<?php

    $mongo = new MongoDB\Driver\Manager("mongodb://localhost:27017");

    $pipeline = 
        [
            [   
                '$match' => 
                    [
                        'pets.animal' => 'Frog',
                    ],
            ],
            [   
                '$unwind' =>'$pets',
            ],
            [   
                '$match' => 
                    [
                        'pets.animal' => 'Frog',
                    ],
            ],
            [
                '$group' => 
                    [
                        '_id' => null,
                        'animals' => ['$push' => '$pets'],
                    ],
            ],
        ];

    $command = new \MongoDB\Driver\Command([
        'aggregate' => 'insert_collection_name', 
        'pipeline' => $pipeline
    ]);

    $cursor = $mongo->executeCommand('insert_db_name', $command);

    foreach($cursor as $key => $document) {
            //do something
    }

?>



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Вземете списък с индекси в MongoDB

  2. Вземете най-новия запис на MongoDB по поле за дата и час

  3. MongoDB C# драйверът не освобождава връзки, а след това грешки

  4. Как да конвертирате BsonDocument в строго типизиран обект с официалния MongoDB C# драйвер?

  5. Рефакторинг на мидълуерния код на проекта NodeJS, използвайки маршрути, контролери и модели