a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > MongoDB > 正文

PHP中的mongodb group操作實例

2020-10-29 18:52:54
字體:
來源:轉載
供稿:網友

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

測試數據:

復制代碼 代碼如下:

> 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、根據category分組

復制代碼 代碼如下:

> 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代碼如下:

復制代碼 代碼如下:

$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 
)

2、根據category來分組,并統計count

復制代碼 代碼如下:

> 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代碼如下:

復制代碼 代碼如下:

$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 

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

復制代碼 代碼如下:

> 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代碼如下:

復制代碼 代碼如下:

$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 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 性高湖久久久久久久久 | 看亚洲a级一级毛片 | 男人的天堂视频网站 | 日韩精品一区二区三区四区视频 | 青草av在线 | 和尚风流一级艳片 | 一区二区三区国产 | aaaaaa毛片 | 亚洲欧洲中文日韩 | 亚洲一区在线视频 | 羞羞小视频在线观看 | 99精品国产高清一区二区麻豆 | 一区不卡| 久久人人网 | 久久久欧美 | 中文字幕一区二区三区乱码图片 | 国产精品毛片一区二区三区 | 国产一级特黄aaa大片评分 | 奇米av | 国产精品一区二区三区在线 | 久www| 欧美日韩国产综合视频 | 欧美日韩一区二区视频在线观看 | 国产黄色大片免费观看 | 97久久超碰国产精品电影 | 久草在线青青草 | 国产精品夜夜爽 | 天天干网 | 久久久久久高清 | 精品久久久久久久久久久久久久 | 日韩成人影院 | 岛国在线免费 | 午夜精品一区二区三区在线观看 | 欧美视频在线免费 | 日韩欧美在线免费观看 | 色婷婷中文字幕 | 一区二区精品 | 久久国精品 | 亚洲 精品 综合 精品 自拍 | 国产精品免费一区二区三区四区 | 亚洲欧美一区二区三区在线 |