1. 程式人生 > >MongoDB 之 aggregate $group 巧妙運用

MongoDB 之 aggregate $group 巧妙運用

有這樣一組資料:

{
    "campaign_id": "A",
    "campaign_name": "A",
    "subscriber_id": "123"
},
{
    "campaign_id": "A",
    "campaign_name": "A",
    "subscriber_id": "123"
},
{
    "campaign_id": "A",
    "campaign_name": "A",
    "subscriber_id": "456"
}

  campaign_id 與 campaign_name  分組,並查詢出每個分組下的記錄條數 及  subscriber_id

  不同記錄的個數

關係型資料庫SQL示例:

select campaign_id,campaign_name,count(subscriber_id),count(distinct subscriber_id)
group by campaign_id,campaign_name from campaigns;

在MongoDB下就存在兩種組合:1) campaign_id, campaign_name, subscriber_id  三個相同的分為一組,

                                                  2) campaign_id, campaign_name

  兩個相同,subscriber_id 不同分為一組,

最後通過這兩種分組查詢出  campaign_id 與 campaign_name  分組,subscriber_id 不同記錄的個數

MongoDB示例:

db.campaigns.aggregate([
    { "$match": { "subscriber_id": { "$ne": null }}},

    // Count all occurrences
    { "$group": {
        "_id": {
            "campaign_id"
: "$campaign_id", "campaign_name": "$campaign_name", "subscriber_id": "$subscriber_id" }, "count": { "$sum": 1 } }}, // Sum all occurrences and count distinct { "$group": { "_id": { "campaign_id": "$_id.campaign_id", "campaign_name": "$_id.campaign_name" }, "totalCount": { "$sum": "$count" }, "distinctCount": { "$sum": 1 } }} ])


文件結果:

第一個 group:

{ 
    "_id" : { 
        "campaign_id" : "A", 
        "campaign_name" : "A", 
        "subscriber_id" : "456"
    }, 
    "count" : 1 
}
{ 
    "_id" : { 
        "campaign_id" : "A", 
        "campaign_name" : "A", 
        "subscriber_id" : "123"
    }, 
    "count" : 2
}

第二個 group:

{ 
    "_id" : { 
        "campaign_id" : "A", 
        "campaign_name" : "A"
    },
    "totalCount" : 3,
    "distinctCount" 
            
           

相關推薦

MongoDB aggregate $group 巧妙運用

有這樣一組資料: { "campaign_id": "A", "campaign_name": "A", "subscriber_id": "123" }, { "campaign_id": "A", "campaign_name": "A",

Morphia - mongodbORM框架

embedded art tails transient sdn tar detail nbsp hit 一、簡介 二、註解 [email protected]/* */ [email protected]/* */[email prote

UGUICanvas Group

如果 lar ble cast com alpha 技術 span ugui 可以通過Canvas Group影響該組UI元素的部分性質,而不需要費力的對該組UI下的每個元素逐個調整。Canvas Group是同時作用於該組UI下的全部元素。 參數:Alpha:該組UI

基數排序多keyword排序運用隊列

printf mod n) key sort article name str oid 源碼例如以下: #include <stdlib.h> #include <stdio.h> typedef struct QUEUEnode* li

MongoDB增刪改查(一)

type over friend top ews tex 內容 ive review 本文主要介紹MongoDB數據庫增刪改查操作。 增 mongoDB和其它關系型數據庫一樣,通過insert來添加數據到集合中去。 db.collectio

運維學習openssh-server命令運用及控制

linuxopenssh-server1.openssh-server功能:讓遠程主機可以通過網絡訪問sshd服務,開始一個安全shell2.客戶端連接方式ssh [email protected]/* */[[email protected]/* */ ~]# ssh [email&

MongoDB分片

索引 第一篇 csdn 屬性 collect sso factor mar popu 本文介紹分片的思想和MongoDB中的實現方法。 首先須要介紹一些主要的概念。 分片 分片。也叫做分區。是一種經常使用的數據庫優化技術。其含義就是將數據拆

.NETIOC控制反轉運用

string 標準 需要 對象 ati ext [] 根據 mar 當前場景: 如果有不同的用戶。使用同一個系統。而不同的客戶有某些不同的需求。在不改變系統主體的情況下,可以直接使用IOC控制反轉依賴搭建項目 1.添加接口層 目前裏面只有一個會員的類。裏面有一個登錄接口

MongoDB學習路線

mongodbMongoDB AtlasDatabase as a ServiceDeploy, operate, and scale a MongoDB database in the cloud with just a few clicks. MongoDB Atlas is fully elastic

MongoDB 幽靈操作避免

出現 等待 原因 依然 觸發 才會 job -s style 進行靜態加載數據到集合的過程中可能會出現。 假設建立一個任務(Job):在MongoDB中進行千條更新操作,開始後迅速終止任務,終止所有更新操作,但依然發現新的更新任務在不斷出現,即使任務已經停止。

mongodb安裝

參考 chkconfig exp man key per star sudo 64位 前言 系統環境是CentOS,linux只支持64位版本 yum源安裝 rpm包說明 mongodb-org-server 包含mongod進程,關聯配置,初始化腳本mongod

MongoDBpymongo

upd star client 關系 alt ads 記錄 進入 結果 PyMongo是什麽  PyMongo是驅動程序,使python程序能夠使用Mongodb數據庫,使用python編寫而成. 安裝  環境:Ubuntu 14.04+python2.7+Mongo

Mongodb權限認證管理

nosql mongodb 權限認證 Mongodb默認是不開啟認證的,對於數據庫來說,這有很大的安全隱患,下面記錄下生產中Mongodb權限認證的方法。 一,環境 阿裏雲:CentOS Linux release 7.4.1708 (Core)Mongodb版本: 3.6.2 二,添加超級用戶

MongoDB Limit 選取 Skip 跳過 Sort 排序 MongoDB - 7

想要 但是 人的 怎麽 解釋 price fin image limit 我們已經學過MongoDB的 find() 查詢功能了,在關系型數據庫中的選取(limit),排序(sort) MongoDB中同樣有,而且使用起來更是簡單 首先我們看下添加幾條Document進來

WebFlux04 SpringBootWebFlux集成MongoDBWindows版本

ng- 類型 god 持久層 tor optional 安裝目錄 bat 控制臺 1 下載並安裝MongoDB   1.1 MongoDB官網        1.2 下載     solutions -> download center        1.3 安裝  

mongoDB基礎

名稱 指令 安裝 href 技術 14. 二次 進度條 查找 關於mongoDB數據庫摘要 1.安裝mongoDB 2.mongo數據庫概念 3.mongo數據庫指令 mongo數據庫對於實際項目開發中可能不實用,但作為為前端做測試,足以。 關閉數據庫

MongoDB基本操作與日常維護

啟動 地址 自己的 進制 日常 sea .... object abc MongoDB基本操作 MongoDB的基本操作主要是對數據庫、集合、文檔的操作,包括創建數據庫、刪除數據庫、插入文檔、更改文檔、刪除文檔、和查詢文檔。 操作 描述 show dbs 查看

MongoDB數據庫命令操作(二)

HERE 命令 .get weight 一個 大於 比較 可選值 聚合 現在詳細學習一下mongodb的數據庫操作。 查詢語句 db.xxx(集合name).find() # 查詢 db.xxx(集合name).findOne() # 只返回一個 db.xxx(集合name

MongoDB主從復制和副本集(四)

dmi 數據庫 mongo alloc already urn tor 安全性 db2 簡單主從復制 采用一主一從或一主多從的布署模式,可以將讀寫分離開來,提高數據庫的可用性,不過mongodb的主從模式並不能在主節點崩潰後,從節點替換主節點的工作,一般可以在開發階段使用

MongoDBshard_副本集和分片部署

sla server nod ase _id person member logs gpo 機器角色分配和拓撲環境如下: -------------------配置副本集s1-------------------------------1.創建目