sql >> Database >  >> NoSQL >> MongoDB

Samenvoegen gebruiken om een ​​lijst te combineren van alle subdocumenten die overeenkomen met de zoekopdracht?

U kunt onderstaande aggregatie gebruiken. $match om documenten te vinden waar array een waarde heeft van Frog en $unwind de pets reeks. $match waar document Frog . heeft en de laatste stap is het group de overeenkomende documenten in een array.

<?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. Waarom heeft een mongodb-replicaset een oneven aantal stemknooppunten nodig?

  2. Redis versus RabbitMQ als een gegevensmakelaar / berichtensysteem tussen Logstash en elasticsearch

  3. Voeg een string toe aan het einde van een bestaand veld in MongoDB

  4. Gebruik MongoDB met Laravel 5.3 "