最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年05月05日 08:39:32   投稿:junjie  
這篇文章主要介紹了MongoDB教程之聚合,MongoDB除了基本的查詢功能之外,還提供了強大的聚合功能,這里主要介紹count、distinct和group,需要的朋友可以參考下

1. count:

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

    --在空集合中,count返回的數(shù)量為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一樣,也接受條件。從結(jié)果可以看出,只有符合條件的文檔參與了計算。
    > db.test.count({"test":1})
    1
    
2. distinct:

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

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

    --為了便于后面的測試,先清空測試集合。
    > db.test.remove()
    > db.test.count()
    0
    --插入4條測試數(shù)據(jù)。請留意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,以及需要區(qū)分的字段,如:age。
    --下面的命令將基于test集合中的age字段執(zhí)行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做的聚合有些復(fù)雜。先選定分組所依據(jù)的鍵,此后MongoDB就會將集合依據(jù)選定鍵值的不同分成若干組。然后可以通過聚合每一組內(nèi)的文檔,產(chǎn)生一個結(jié)果文檔。
 
復(fù)制代碼 代碼如下:

    --這里是準(zhǔn)備的測試數(shù)據(jù)
    > 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函數(shù)參數(shù)prev的初始值。每個組都有一份該初始值。
    ... "$reduce" : function(doc,prev) {  --reduce函數(shù)接受兩個參數(shù),doc表示正在迭代的當(dāng)前文檔,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
        }
    ]
    --下面的例子是統(tǒng)計每個分組內(nèi)文檔的數(shù)量。
    > 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結(jié)果的例子。
    > db.test.group( {
    ... key: { day: true},
    ... initial: {count: 0},
    ... reduce: function(obj,prev){ prev.count++;},
    ... finalize: function(out){ out.scaledCount = out.count * 10 } --在結(jié)果文檔中新增一個鍵。
    ... } )
    [
        {
            "day" : "2012-08-20",
            "count" : 2,
            "scaledCount" : 20
        },
        {
            "day" : "2012-08-21",
            "count" : 2,
            "scaledCount" : 20
        },
        {
            "day" : "2012-08-22",
            "count" : 1,
            "scaledCount" : 10
        }   
    ]


相關(guān)文章

  • MongoDB最基本命令速查筆記

    MongoDB最基本命令速查筆記

    這篇文章主要介紹了一些MongoDB最基本命令的這樣一個速查筆記,包括MongoDB非正常關(guān)閉后無法啟動問題的解決方法,需要的朋友可以參考下
    2016-01-01
  • centos8安裝MongoDB的詳細(xì)過程

    centos8安裝MongoDB的詳細(xì)過程

    MongoDB由MongoDB Inc開發(fā),并根據(jù)SSPL(服務(wù)器端公共許可證)進(jìn)行分發(fā),是一個開源,跨平臺,面向文檔的數(shù)據(jù)庫管理系統(tǒng),本文重點給大家介紹centos8安裝MongoDB的詳細(xì)過程,感興趣的朋友一起看看吧
    2021-10-10
  • MongoDB多數(shù)據(jù)源配置與切換的方法示例

    MongoDB多數(shù)據(jù)源配置與切換的方法示例

    這篇文章主要介紹了MongoDB多數(shù)據(jù)源配置與切換的方法示例,如何在SpringBoot應(yīng)用中配置并使用兩個MongoDB數(shù)據(jù)源,包括YAML配置文件的編寫,避免默認(rèn)MongoTemplate注入,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 淺析MongoDB 全文檢索

    淺析MongoDB 全文檢索

    這篇文章主要介紹了MongoDB 全文檢索的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的學(xué)習(xí)了解MongoDB,感興趣的朋友可以了解下
    2020-07-07
  • 基于MongoDB數(shù)據(jù)庫的數(shù)據(jù)類型和$type操作符詳解

    基于MongoDB數(shù)據(jù)庫的數(shù)據(jù)類型和$type操作符詳解

    下面小編就為大家?guī)硪黄贛ongoDB數(shù)據(jù)庫的數(shù)據(jù)類型和$type操作符詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • mongodb禁止外網(wǎng)訪問及添加賬號的操作方法

    mongodb禁止外網(wǎng)訪問及添加賬號的操作方法

    這篇文章主要介紹了mongodb禁止外網(wǎng)訪問及添加賬號的操作方法,需要的朋友可以參考下
    2017-12-12
  • Windows安裝壓縮版MongoDB的教程

    Windows安裝壓縮版MongoDB的教程

    MongoDB 是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。這篇文章主要介紹了Windows安裝壓縮版MongoDB的教程,需要的朋友可以參考下
    2019-12-12
  • 2021最新版windows10系統(tǒng)MongoDB數(shù)據(jù)庫安裝及配置環(huán)境

    2021最新版windows10系統(tǒng)MongoDB數(shù)據(jù)庫安裝及配置環(huán)境

    這篇文章主要介紹了2021最新版MongoDB數(shù)據(jù)庫安裝及配置環(huán)境(windows10系統(tǒng)),本文通過圖文實例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 阿里云CentOS7安裝Mongodb教程

    阿里云CentOS7安裝Mongodb教程

    本文給大家介紹的教程主要參考資源的官方文檔,當(dāng)然如果你是centos6的,也可以看看其他文章,筆者用的是7,mongodb想用3以上的版本,需要的小伙伴可以參考下
    2016-11-11
  • MongoDB部署超詳細(xì)步驟記錄

    MongoDB部署超詳細(xì)步驟記錄

    這篇文章主要介紹了MongoDB部署超詳細(xì)步驟的相關(guān)資料,包括了MongoDB的安裝配置、MongoDB?Shell的安裝、常用命令操作及備份與恢復(fù)方法,需要的朋友可以參考下
    2025-03-03

最新評論

柯坪县| 白朗县| 安仁县| 南雄市| 横峰县| 宁晋县| 舞阳县| 基隆市| 邳州市| 岫岩| 布拖县| 永吉县| 沭阳县| 乌苏市| 陆河县| 上饶市| 汾西县| 莱芜市| 咸阳市| 新乡县| 通辽市| 太白县| 顺平县| 西青区| 柳河县| 二手房| 堆龙德庆县| 新疆| 甘孜| 财经| 天津市| 新津县| 南江县| 上杭县| 南京市| 永川市| 临沭县| 蕲春县| 外汇| 城步| 车致|