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. MongoDBに書き込むためにjson文字列をbsonドキュメントにマーシャリングする方法は?

    2. 配列要素を比較し、スコアが最も低いものを削除します

    3. $unwindなしで配列内の重複を検索

    4. MongoDBのファセットを使用してパーセンテージを計算するにはどうすればよいですか?