Heim > php教程 > PHP开发 > Beispiel für einen Mongodb-Gruppenbetrieb in PHP

Beispiel für einen Mongodb-Gruppenbetrieb in PHP

高洛峰
Freigeben: 2016-12-23 09:41:47
Original
1417 Leute haben es durchsucht

Im Anschluss an den vorherigen Artikel geht es in diesem Artikel hauptsächlich um die Gruppenfunktion von Mongodb, die ziemlich leistungsfähig ist. Die Verwendung von find (), skip (), unique () usw. ist ziemlich kompliziert.

Testdaten:

> db.fruit.find();  
{ "_id" : 1, "category" : "fruit", "name" : "apple" }  
{ "_id" : 2, "category" : "fruit", "name" : "peach" }  
{ "_id" : 3, "category" : "fruit", "name" : "banana" }  
{ "_id" : 4, "category" : "veggie", "name" : "corn" }  
{ "_id" : 5, "category" : "veggie", "name" : "broccoli" }
Nach dem Login kopieren

1. Gruppierung nach Kategorie

> db.fruit.group(  
       {  
         key: { category: 1},  
         reduce: function(obj, prev) {  
                     prev.items.push(obj.name);  
                 },  
         initial: { items : [] }  
       }  
    );  
[  
        {  
                "category" : "fruit",  
                "items" : [  
                        "apple",  
                        "peach",  
                        "banana"  
                ]  
        },  
        {  
                "category" : "veggie",  
                "items" : [  
                        "corn",  
                        "broccoli"  
                ]  
        }  
]
Nach dem Login kopieren

Der PHP-Code lautet wie folgt:

$keys = array("category" => 1);  
$initial = array("items" => array());  
$reduce = "function (obj, prev) { prev.items.push(obj.name); }";  
$g = $collection->group($keys, $initial, $reduce);  
  
print_r($g);   //结果如下。  
  
Array  
(  
    [retval] => Array  
        (  
            [0] => Array  
                (  
                    [category] => fruit  
                    [items] => Array  
                        (  
                            [0] => apple  
                            [1] => peach  
                            [2] => banana  
                        )  
  
                )  
  
            [1] => Array  
                (  
                    [category] => veggie  
                    [items] => Array  
                        (  
                            [0] => corn  
                            [1] => broccoli  
                        )  
  
                )  
  
        )  
  
    [count] => 5  
    [keys] => 2  
    [ok] => 1  
)
Nach dem Login kopieren

2 . Nach Kategorie gruppieren und zählen

> db.fruit.group(  
           {  
             key: { category: 1},  
             cond: { _id: { $gt: 2 } },  
             reduce: function(obj, prev) {  
                prev.items.push(obj.name);  
                prev.count++;  
             },  
             initial: { items : [] ,count:0}  
           }  
        );  
[  
    {  
        "category" : "fruit",  
        "items" : [  
            "banana"  
        ],  
        "count" : 1  
    },  
    {  
        "category" : "veggie",  
        "items" : [  
            "corn",  
            "broccoli"  
        ],  
        "count" : 2  
    }  
]
Nach dem Login kopieren

Der PHP-Code lautet wie folgt:

$keys = array("category" => 1);  
$initial = array("items" => array(),'count'=>0);  
$reduce = "function (obj, prev) { " .  
              "prev.items.push(obj.name); " .  
              "prev.count++;" .  
          "}";  
$condition = array('condition' => array("_id" => array( '$gt' => 2)));  
$g = $collection->group($keys, $initial, $reduce, $condition);  
  
print_r($g);   //结果如下。  
  
Array  
(  
    [retval] => Array  
        (  
            [0] => Array  
                (  
                    [category] => fruit  
                    [items] => Array  
                        (  
                            [0] => banana  
                        )  
  
                    [count] => 1  
                )  
  
            [1] => Array  
                (  
                    [category] => veggie  
                    [items] => Array  
                        (  
                            [0] => corn  
                            [1] => broccoli  
                        )  
  
                    [count] => 2  
                )  
        )  
  
    [count] => 3  
    [keys] => 2  
    [ok] => 1  
)
Nach dem Login kopieren

3. Die Verwendung der Aggregatgruppenfunktion ist ebenfalls sehr leistungsfähig >

Der PHP-Code lautet wie folgt:
> db.fruit.aggregate([  
                     { $match: { _id: {$gt:0} } },  
                     { $group: { _id: "$category", count: { $sum: 1 } } },  
                     { $sort: { count: -1 } }  
                   ]);  
{ "_id" : "fruit", "count" : 3 }  
{ "_id" : "veggie", "count" : 2 }
Nach dem Login kopieren

Es gibt viele Auswahloperationen in Mongodb. Hier sprechen wir nur über einige häufig verwendete Funktionen.
$cond = array(  
    array(  
        '$match' => array('_id' => array('$gt' => 0)),  
    ),  
    array(  
        '$group' => array(  
            '_id' => '$category',  
           'count' => array('$sum' => 1),  
        ),  
    ),  
    array(  
        '$sort' => array("count" => -1),  
    ),  
);  
$result = $collection->aggregate($cond);  
print_r($result);    //结果如下:  
  
Array  
(  
    [result] => Array  
        (  
            [0] => Array  
                (  
                    [_id] => fruit  
                    [count] => 3  
                )  
  
            [1] => Array  
                (  
                    [_id] => veggie  
                    [count] => 2  
                )  
  
        )  
  
    [ok] => 1  
)
Nach dem Login kopieren

Weitere Artikel zu Mongodb-Gruppenoperationsbeispielen in PHP finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Parameterverständnis von Mongodb
Aus 1970-01-01 08:00:00
0
0
0
Verwendung von Symfony2 Mongodb
Aus 1970-01-01 08:00:00
0
0
0
mongodb _id umbenennen
Aus 1970-01-01 08:00:00
0
0
0
MongoDB schließt Verbindung – Stapelüberlauf
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage