麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > MongoDB > 正文

PHP中的mongodb group操作實例

2020-03-14 13:24:47
字體:
供稿:網(wǎng)友
這篇文章主要介紹了PHP中的mongodb group操作實例,本文給出了3個group命令的用法,需要的朋友可以參考下
 
 

緊接著上篇來,這篇主要講,mongodb的group功能,做的還是挺強大的,相當(dāng)對于find(),skip(),distinct()等,用法比較復(fù)雜。

測試數(shù)據(jù):

復(fù)制代碼代碼如下:

> 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" }  

 

1、根據(jù)category分組

復(fù)制代碼代碼如下:

> 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"  
                ]  
        }  
]

 

php代碼如下:

復(fù)制代碼代碼如下:

$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);   //結(jié)果如下。  
  
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  
)

 

2、根據(jù)category來分組,并統(tǒng)計count

 

復(fù)制代碼代碼如下:

> 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  
    }  
]

 

php代碼如下:

 

復(fù)制代碼代碼如下:

$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);   //結(jié)果如下。  
  
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  
)  

 

3、利用aggregate group功能,也挺強大

 

復(fù)制代碼代碼如下:

> db.fruit.aggregate([  
                     { $match: { _id: {$gt:0} } },  
                     { $group: { _id: "$category", count: { $sum: 1 } } },  
                     { $sort: { count: -1 } }  
                   ]);  
{ "_id" : "fruit", "count" : 3 }  
{ "_id" : "veggie", "count" : 2 }  

 

php代碼如下:

復(fù)制代碼代碼如下:

$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);    //結(jié)果如下:  
  
Array  
(  
    [result] => Array  
        (  
            [0] => Array  
                (  
                    [_id] => fruit  
                    [count] => 3  
                )  
  
            [1] => Array  
                (  
                    [_id] => veggie  
                    [count] => 2  
                )  
  
        )  
  
    [ok] => 1  
)  

 

mongodb 的select 操作有很多,在這里,只是說了一些常用的功能。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产羞羞视频在线观看免费应用 | 一级毛片免费大片 | 黄色毛片视频在线观看 | 黄片毛片一级 | 国产88久久久国产精品免费二区 | 亚洲午夜视频在线 | 久久另类视频 | 色交视频 | 日本不卡一区二区在线观看 | 色999久久久精品人人澡69 | 91黄瓜视频| 国产精品一区二区三区在线播放 | 日韩黄a | 国产精品免费在线 | 成年片在线观看 | 精品国产一区二区三区四区在线 | 鲁丝一区二区二区四区 | 永久免费不卡在线观看黄网站 | 日本a级免费 | 曰韩黄色片 | 视频一区二区不卡 | 成人三级在线播放 | 国产精品美女一区二区 | 国产亚洲欧美视频 | 国产精品一区免费在线观看 | 午夜精品久久久久久久96蜜桃 | 色视频一区二区 | 亚洲欧美不卡视频 | 欧美一级电影网 | 精品久久久久久国产三级 | 国产女厕一区二区三区在线视 | 亚州综合图片 | 中文字幕在线免费播放 | 国产精品久久久久久久四虎电影 | 亚洲免费在线看 | 欧美偷拍一区二区 | 久久久综合 | 久久免费视频精品 | 懂色av懂色aⅴ精彩av | 欧美成网 | 亚洲精中文字幕二区三区 |