国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mongodb中的aggregate(聚合查詢)

leanote / 2041人閱讀

摘要:什么是類似于拆分結(jié)果然后對結(jié)果進(jìn)行分析求值然后再返回新結(jié)果文檔聚合官方運(yùn)用篇個(gè)人總結(jié)案例一案例二案例三案例那么有什么作用呢舉個(gè)例子文檔中有如下幾個(gè)集合集合一集合二集合三我們想篩選出中為的集合理所當(dāng)然我們會這樣寫當(dāng)然這樣寫是能拿到結(jié)

什么是aggregate

aggregate類似于pipe.拆分結(jié)果然后對結(jié)果進(jìn)行分析求值然后再返回新結(jié)果..

文檔

MongoDB聚合
官方API
MongoDB aggregate 運(yùn)用篇 個(gè)人總結(jié) - fycayy
案例一
案例二
案例三

案例

那么aggregate有什么作用呢?舉個(gè)例子 testName文檔中有如下幾個(gè)集合

//集合一
{
    _id:1,
    list:[
        {name:"x",age:11,sex:"boy"},
        {name:"y",age:12,sex:"girl"},
        {name:"z",age:13,sex:"boy"},
        {name:"n",age:14,sex:"boy"},
    ]
}
//集合二
{
    _id:2,
    list:[
        {name:"q",age:15,sex:"boy"},
        {name:"w",age:16,sex:"girl"},
        {name:"e",age:17,sex:"girl"},
        {name:"r",age:18,sex:"boy"},
    ]
}
//集合三
{
     _id:3,
    list:[
        {name:"a",age:19,sex:"girl"},
        {name:"s",age:20,sex:"girl"},
        {name:"d",age:21,sex:"girl"},
        {name:"f",age:22,sex:"boy"},
    ]
}

我們想篩選出list中sex為boy的集合.理所當(dāng)然我們會這樣寫

db.testName.find({"list":{"$elemMatch":{"sex":"boy"}}})

當(dāng)然這樣寫是能拿到結(jié)果的.拿到的是什么結(jié)果呢?結(jié)果會返回所有的sex=boy的集合,并且sex=girl的數(shù)據(jù)也包含在內(nèi).但是我們只想要sex=boy的數(shù)據(jù).這時(shí)候就可以用聚合查詢了

聚合查詢
db.testName.aggregate(
    {"$unwind":"$list"},
    {"$match":{"list.sex":{"$eq":"boy"}}},     
    {
        "$group":{
            "_id":"$_id",
            "results":{
                "$push"{"name":"$list.name","age":"$list.age","sex":"$list.sex"}
            }
        }
    }   
)

okay,不要怕.我們慢慢來分析 首先從$unwind來分析.$unwind會拆分?jǐn)?shù)組元素拆分成一個(gè)一個(gè)集合那么這條參數(shù)執(zhí)行后會得到什么結(jié)果呢?

{
    _id:1,
    list:{name:"x",age:11,sex:"boy"},
}
{
    _id:1,
    list:{name:"y",age:12,sex:"girl"},
}
{
    _id:1,
    list:{name:"z",age:13,sex:"boy"},
}
...

會拆分成一條條的臨時(shí)集合,這個(gè)臨時(shí)集合的名稱就是$list,這就相當(dāng)于第一道工藝程序把數(shù)組拆分開.接下來交給第二道程序{"$match":{"list.sex":{"$eq":"boy"}}} 這條語句作用是啥呢?想必大家也知道了.就是對臨時(shí)的集合進(jìn)行一個(gè)查詢,類似于db.$list.find(),那么查詢到的肯定就是sex=boy的數(shù)據(jù)了 現(xiàn)在返回的數(shù)據(jù)就是 不會有sex=girl的存在了

{
    _id:1,
    list:{name:"x",age:11,sex:"boy"},
}
{
    _id:1,
    list:{name:"z",age:13,sex:"boy"},
}
....

接下來就是要把這些組合在一起,也就是第三道工藝程序

{
    "$group":{
        "_id":"$_id",
        "results":{
            "$push"{"name":"$list.name","age":"$list.age","sex":"$list.sex"}
        }
    }
} 

其實(shí)也很好理解,$group就是組合的意思,把這些零散的數(shù)據(jù)以我們想要的形式組合起來.這個(gè)$_id指的就是臨時(shí)集合中的_id.那么$list就是臨時(shí)集合中的list,以_id為首把這些零散的list給組合成一個(gè)新的數(shù)組就是聚合.$push是添加一個(gè)對象,當(dāng)然也有更簡單的方式

{
    "$group":{
        "_id":"$_id",
        "results":{
            "$push":"$list"
        }
    }
} 

這樣就直接把整個(gè)list對象給push到一個(gè)數(shù)組中.那么這樣查詢最終返回的結(jié)果就是我們想要的結(jié)果了

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/79372.html

相關(guān)文章

  • mongodb中的aggregate(聚合查詢)

    摘要:什么是類似于拆分結(jié)果然后對結(jié)果進(jìn)行分析求值然后再返回新結(jié)果文檔聚合官方運(yùn)用篇個(gè)人總結(jié)案例一案例二案例三案例那么有什么作用呢舉個(gè)例子文檔中有如下幾個(gè)集合集合一集合二集合三我們想篩選出中為的集合理所當(dāng)然我們會這樣寫當(dāng)然這樣寫是能拿到結(jié) 什么是aggregate aggregate類似于pipe.拆分結(jié)果然后對結(jié)果進(jìn)行分析求值然后再返回新結(jié)果.. 文檔 MongoDB聚合官方APIMongo...

    Seay 評論0 收藏0
  • MongoDB指南---16、聚合

    摘要:將返回結(jié)果限制為前個(gè)。所以,聚合的結(jié)果必須要限制在以內(nèi)支持的最大響應(yīng)消息大小。包含字段和排除字段的規(guī)則與常規(guī)查詢中的語法一致。改變字符大小寫的操作,只保證對羅馬字符有效。只對羅馬字符組成的字符串有效。 上一篇文章:MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲文件下一篇文章:MongoDB指南---17、MapReduce 如果你有數(shù)據(jù)存儲在Mon...

    Keagan 評論0 收藏0
  • MongoDB指南---16、聚合

    摘要:將返回結(jié)果限制為前個(gè)。所以,聚合的結(jié)果必須要限制在以內(nèi)支持的最大響應(yīng)消息大小。包含字段和排除字段的規(guī)則與常規(guī)查詢中的語法一致。改變字符大小寫的操作,只保證對羅馬字符有效。只對羅馬字符組成的字符串有效。 上一篇文章:MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲文件下一篇文章:MongoDB指南---17、MapReduce 如果你有數(shù)據(jù)存儲在Mon...

    _Zhao 評論0 收藏0
  • mongoDB查詢進(jìn)階】聚合管道(二) -- 階段操作符

    摘要:當(dāng)在中使用時(shí),累加器是針對每個(gè)分組使用的當(dāng)在中使用時(shí),累加器則是針對每個(gè)字面量起作用,具體用法下一篇文章闡述。另外再加以配合表達(dá)式操作符組成的表達(dá)式或者在或中使用累加器能查詢統(tǒng)計(jì)的內(nèi)容會更加的多樣化。 上篇最后說到管道操作符,本篇文章將詳細(xì)說一下管道操作符。 mongoDB查詢進(jìn)階--聚合管道(一)回顧 什么是管道操作符(Aggregation Pipeline Operators) ...

    brianway 評論0 收藏0
  • mongoDB查詢進(jìn)階】聚合管道(二) -- 階段操作符

    摘要:當(dāng)在中使用時(shí),累加器是針對每個(gè)分組使用的當(dāng)在中使用時(shí),累加器則是針對每個(gè)字面量起作用,具體用法下一篇文章闡述。另外再加以配合表達(dá)式操作符組成的表達(dá)式或者在或中使用累加器能查詢統(tǒng)計(jì)的內(nèi)容會更加的多樣化。 上篇最后說到管道操作符,本篇文章將詳細(xì)說一下管道操作符。 mongoDB查詢進(jìn)階--聚合管道(一)回顧 什么是管道操作符(Aggregation Pipeline Operators) ...

    flybywind 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<