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

首頁 > 數據庫 > MongoDB > 正文

MongoDB教程之聚合(count、distinct和group)

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

1. count:

復制代碼 代碼如下:

    --在空集合中,count返回的數量為0。
    > db.test.count()
    0
    --測試插入一個文檔后count的返回值。
    > db.test.insert({"test":1})
    > db.test.count()
    1
    > db.test.insert({"test":2})
    > db.test.count()
    2
    --count和find一樣,也接受條件。從結果可以看出,只有符合條件的文檔參與了計算。
    > db.test.count({"test":1})
    1
    
2. distinct:

    distinct用來找出給定鍵的所有不同的值。使用時也必須指定集合和鍵。
 

復制代碼 代碼如下:

    --為了便于后面的測試,先清空測試集合。
    > db.test.remove()
    > db.test.count()
    0
    --插入4條測試數據。請留意Age字段。
    > db.test.insert({"name":"Ada", "age":20})
    > db.test.insert({"name":"Fred", "age":35})
    > db.test.insert({"name":"Andy", "age":35})
    > db.test.insert({"name":"Susan", "age":60})
    --distinct命令必須指定集合名稱,如test,以及需要區分的字段,如:age。
    --下面的命令將基于test集合中的age字段執行distinct命令。
    > db.runCommand({"distinct":"test", "key":"age"})
    {
            "values" : [
                    20,
                    35,
                    60
            ],
            "stats" : {
                    "n" : 4,
                    "nscanned" : 4,
                    "nscannedObjects" : 4,
                    "timems" : 0,
                    "cursor" : "BasicCursor"
            },
            "ok" : 1
    }   

3. group:
    group做的聚合有些復雜。先選定分組所依據的鍵,此后MongoDB就會將集合依據選定鍵值的不同分成若干組。然后可以通過聚合每一組內的文檔,產生一個結果文檔。
 
復制代碼 代碼如下:

    --這里是準備的測試數據
    > db.test.remove()
    > db.test.insert({"day" : "2012-08-20", "time" : "2012-08-20 03:20:40", "price" : 4.23})
    > db.test.insert({"day" : "2012-08-21", "time" : "2012-08-21 11:28:00", "price" : 4.27})
    > db.test.insert({"day" : "2012-08-20", "time" : "2012-08-20 05:00:00", "price" : 4.10})
    > db.test.insert({"day" : "2012-08-22", "time" : "2012-08-22 05:26:00", "price" : 4.30})
    > db.test.insert({"day" : "2012-08-21", "time" : "2012-08-21 08:34:00", "price" : 4.01})
    --這里將用day作為group的分組鍵,然后取出time鍵值為最新時間戳的文檔,同時也取出該文檔的price鍵值。
    > db.test.group( {
    ... "key" : {"day":true},           --如果是多個字段,可以為{"f1":true,"f2":true}
    ... "initial" : {"time" : "0"},       --initial表示$reduce函數參數prev的初始值。每個組都有一份該初始值。
    ... "$reduce" : function(doc,prev) {  --reduce函數接受兩個參數,doc表示正在迭代的當前文檔,prev表示累加器文檔。
    ...     if (doc.time > prev.time) {
    ...         prev.day = doc.day
    ...         prev.price = doc.price;
    ...         prev.time = doc.time;
    ...     }
    ... } } )
    [
        {
            "day" : "2012-08-20",
            "time" : "2012-08-20 05:00:00",
            "price" : 4.1
        },
        {
            "day" : "2012-08-21",
            "time" : "2012-08-21 11:28:00",
            "price" : 4.27
        },
        {
            "day" : "2012-08-22",
            "time" : "2012-08-22 05:26:00",
            "price" : 4.3
        }
    ]
    --下面的例子是統計每個分組內文檔的數量。
    > db.test.group( {
    ... key: { day: true},
    ... initial: {count: 0},
    ... reduce: function(obj,prev){ prev.count++;},
    ... } )
    [
        {
            "day" : "2012-08-20",
            "count" : 2
        },
        {
            "day" : "2012-08-21",
            "count" : 2
        },
        {
            "day" : "2012-08-22",
            "count" : 1
        }
    ]
    --最后一個是通過完成器修改reduce結果的例子。
    > db.test.group( {
    ... key: { day: true},
    ... initial: {count: 0},
    ... reduce: function(obj,prev){ prev.count++;},
    ... finalize: function(out){ out.scaledCount = out.count * 10 } --在結果文檔中新增一個鍵。
    ... } )
    [
        {
            "day" : "2012-08-20",
            "count" : 2,
            "scaledCount" : 20
        },
        {
            "day" : "2012-08-21",
            "count" : 2,
            "scaledCount" : 20
        },
        {
            "day" : "2012-08-22",
            "count" : 1,
            "scaledCount" : 10
        }   
    ]


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久青草热 | 成人一级视频在线观看 | 久久国产精品久久久久久久久久 | 男女隐私免费视频 | 成av在线 | 国产一级小视频 | 精品一区在线视频 | 久久亚洲精品11p | 久久人人av | 青草伊人网 | 操操操操操 | 黄色淫片 | 免费久久精品 | 长泽雅美av| 久久精品亚洲一区二区 | 日韩大片在线永久观看视频网站免费 | 九九久久视频 | 国产免费www | 精品国产一区三区 | 视频一区二区国产 | 久久国产在线观看 | 91九色蝌蚪在线 | 久久av免费观看 | 成人综合一区二区 | 中文字幕在线永久视频 | 日韩av成人 | 成人午夜毛片 | 深夜影院一级毛片 | 青草av.久久免费一区 | 91精品国 | 亚洲欧美不卡视频 | 亚洲精品com | 国产精品一区二区三区在线看 | 视频一区二区不卡 | 九九热精品视频在线 | 国产一区二区在线免费播放 | 国产女厕一区二区三区在线视 | 在线观看中文字幕av | 国产一国产精品一级毛片 | 一日本道久久久精品国产 | 日韩av在线影院 |