亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

mongodb pipeline 簡(jiǎn)單說(shuō)明

JerryWangSAP / 3528人閱讀

摘要:基本說(shuō)明作用對(duì)的進(jìn)行運(yùn)算,篩選,截取,排序操作語(yǔ)法是要執(zhí)行的聚合說(shuō)明格式類型或包含多個(gè)的列表或,會(huì)順序執(zhí)行列表里面的操作語(yǔ)法操作符操作提供了非常多的操作符,這里只選取常用的幾個(gè)進(jìn)行說(shuō)明常用操作重命名及增加,刪除字段例子保留字段不要字段常用以

基本說(shuō)明 作用

對(duì)mongodb的collection進(jìn)行運(yùn)算,篩選,截取,排序操作

語(yǔ)法
 db.collection.aggregate(pipeline)

pipeline是要執(zhí)行的聚合說(shuō)明

pipeline 格式

dict類型或包含多個(gè)dict的列表:{}[{},…,{}],mongodb會(huì)順序執(zhí)行列表里面的操作
pipeline 語(yǔ)法:{$操作符:{操作}}
mongodb提供了非常多的操作符,這里只選取常用的幾個(gè)進(jìn)行說(shuō)明

常用操作 $project

重命名及增加,刪除字段

例子:

db.collection.aggregate({"$project": {
    key1:1, // 保留key1字段
    key2:0, //不要key2字段(常用以去掉"_id",因?yàn)?_id"會(huì)默認(rèn)被包含)
    keyalias:"$key3"http://將key3字段重命名為keyalias
    }}
$match

過(guò)濾篩選操作
match語(yǔ)法和db.collection.find()語(yǔ)法相同

$limit

現(xiàn)在數(shù)據(jù)條數(shù)
如: db.collection.aggregate({$limit:5}) : 只返回最多5條數(shù)據(jù)

$skip

從數(shù)據(jù)集合開始跳過(guò)n條數(shù)據(jù)
語(yǔ)法和$limit 一樣,n為正整數(shù)

$unwind

將數(shù)組元素拆分成獨(dú)立字段
語(yǔ)法{$unwind:"$字段名"},該字段的值必需是數(shù)組

例子:
假設(shè)collection 原版的數(shù)據(jù)是:

{_id:xxxxxxx,
 key1: [
    {subk1: value,
     subk2: value
    },
    {subk3: value,
     subk2: value
    }],
 key2: value,
 key3: value
}

通過(guò)db.collection.aggregate({$unwind:"$key1"})后:

 {result:[
    {
        _id: xxxxxxx,
        key1: {subk1: value, subk2: value},
        key2: value,
        key3:value
    },
    {
        _id: xxxxxxx
        key1: {subk3: value, subk2: value},
        key3: value
    }
    ]
 }
$group

根據(jù)指定字段值進(jìn)行分組,可以包含算數(shù)類型的表達(dá)式操作符

例子:
假設(shè)collection數(shù)據(jù)為

[{
    _id: xxxxxxx,
    key1: v1,
    key2: 2,
 },
 {
    _id: xxxxxxxx,
    key1: v2,
    key2: 5
 },
 {
    _id: xxxxxxx,
    key1: v1,
    key2: 7
 },
]

db.collection.aggregate({$group:{_id:"$key1", key2sum:{$sum :"$key2"}}})

結(jié)果為:

{result:[
    {key1: v1, key2sum: 9},
    {key1: v2, key2sum: 5}
 ]
}
$sort

對(duì)結(jié)果進(jìn)行排序**,語(yǔ)法和db.collection.find().sort()語(yǔ)法一致
{$sort:{key1: -1, key2:1}}: key1值降序,key2值升序

常用操作示例 取某一段范圍
pipeline = {$match:{ts:{$gte: 100000, $lt:120000}}}

篩選出ts在[100000, 120000] 之間的數(shù)據(jù)

去掉值為null的數(shù)據(jù)
pipeline = {$match:{key1:"$ne":null}}

去掉key1為null的數(shù)據(jù)

多個(gè)操作組合示例
 pipeline = [{"$project":{"minu": 1, "_id": 0, "t": 1, "r": 1}},
    {"$unwind": "$minu"},
    {"$match": {"minu": {"$ne": None}}},
    {"$project": {"r": 1, "trans_count": "$minu.k", "ts": {"$add": ["$t", "$minu.t"]}}},
    {"$match": {"ts": {"$gte": 1457059140, "$lt": 1457060040}}},
    {"$project": {"trans_count": 1, "id": 0, "r": 1}},
    {"$group": {"trans_count": {"$sum": "$trans_count"}, "id": "$r"}},
    {"$project": {"trans_count": 1, "id": 0, "ret_code": "$id"}},
    {"$sort": {"trans_count": -1, "ret_code": 1}}]

mongodb會(huì)順序執(zhí)行以下內(nèi)容:

獲取minu, t, r 字段的內(nèi)容, 去掉_id字段

分解minu的數(shù)據(jù)

去掉minu字段為null的數(shù)據(jù)

將保留r字段, minu.k重命名為trans_count, ts為t和minu.t的和

獲取ts在[1457059140, 1457060040]之間的數(shù)據(jù)

獲取trans_count, r 字段

按照r字段的值分組,同一個(gè)r值得trans_count相加(id的值是r字段的內(nèi)容)

保留trans_count字段,_id重命名為ret_code

根據(jù)trans_count降序,ret_code升序排列

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/18820.html

相關(guān)文章

  • mongoDB查詢進(jìn)階】聚合管道(一) -- 初識(shí)

    摘要:小結(jié)是聚合管道查詢使用的方法,參數(shù)是數(shù)組,每個(gè)數(shù)組元素就是一個(gè),中運(yùn)用操作符對(duì)數(shù)據(jù)進(jìn)行處理后再交由下一個(gè),直到?jīng)]有下個(gè),就輸出最終的結(jié)果,而數(shù)據(jù)的處理則是通過(guò)使用操作符,本文先簡(jiǎn)單介紹了一下有哪些常用的操作符,下一篇再詳細(xì)說(shuō)明。 前言:一般查詢可以通過(guò)find方法,但如果是比較復(fù)雜的查詢或者數(shù)據(jù)統(tǒng)計(jì)的話,find可能就無(wú)能為力了,這時(shí)也許你需要的是aggregate. 什么是聚合管道(...

    MSchumi 評(píng)論0 收藏0
  • 基于nodejs將mongodb的數(shù)據(jù)實(shí)時(shí)同步到elasticsearch

    摘要:一前言因公司需要選用做全文檢索,持久化存儲(chǔ)選用的是,但是希望里面的數(shù)據(jù)發(fā)生改變可以實(shí)時(shí)同步到上,一開始主要使用的版本,可以搞定這個(gè)問(wèn)題?;蛘咝薷闹械哪骋粭l數(shù)據(jù),也會(huì)實(shí)時(shí)同步到中。如何把的主文檔和附件信息都同步到中利用的來(lái)實(shí)現(xiàn)。 一、前言 因公司需要選用elasticsearch做全文檢索,持久化存儲(chǔ)選用的是mongodb,但是希望mongodb里面的數(shù)據(jù)發(fā)生改變可以實(shí)時(shí)同步到elast...

    miya 評(píng)論0 收藏0
  • scrapy學(xué)習(xí)筆記(三):使用item與pipeline保存數(shù)據(jù)

    摘要:最近真是忙的吐血。。。上篇寫的是直接在爬蟲中使用,這樣不是很好,下使用才是正經(jīng)方法。 最近真是忙的吐血。。。 上篇寫的是直接在爬蟲中使用mongodb,這樣不是很好,scrapy下使用item才是正經(jīng)方法。在item中定義需要保存的內(nèi)容,然后在pipeline處理item,爬蟲流程就成了這樣: 抓取 --> 按item規(guī)則收集需要數(shù)據(jù) -->使用pipeline處理(存儲(chǔ)等) 定義it...

    13651657101 評(píng)論0 收藏0
  • MongoDB:aggregate與aggregateCursor

    摘要:環(huán)境使用可以實(shí)現(xiàn)較為復(fù)雜的數(shù)據(jù)聚合操作,例如匯總?cè)ブ貐R總分組統(tǒng)計(jì)等。返回結(jié)果為數(shù)組,需要注意數(shù)據(jù)大小不能超過(guò)。的返回結(jié)果為游標(biāo),可循環(huán)取數(shù)。 環(huán)境mongos 3.0.14 aggregate 使用 aggregate 可以實(shí)現(xiàn)較為復(fù)雜的數(shù)據(jù)聚合操作,例如 匯總(count)、去重匯總(distinct count)、分組統(tǒng)計(jì)(group having)等。 aggregate 返回結(jié)...

    goji 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<