1. 程式人生 > >MongoDB的再次相逢之聚合(一)

MongoDB的再次相逢之聚合(一)

聚合框架

MongoDB中聚合(aggregate)主要用於處理資料(諸如統計平均值,求和等),並返回計算後的資料結果。有點類似sql語句中的 count(*);
在MongoDB中,使用聚合框架可以對集合中的文件進行變換和組合。
聚合框架通過多個構件來建立一個管道(pipeline),用於對一連串的文件進行處理;
這裡寫圖片描述

基本語法

在MongoDB中聚合資料,應該使用aggregate方法:
語法格式:

db.collection.aggregate( 聚合條件 );

在使用單個操作符時,我們可以傳入一個JSON物件作為aggregate方法的集合條件,如:

db.users
.aggregate({ $project:{ _id:0, name:1, } })

當需要使用多個操作符時,我們可以傳入一個數組條件來完成文件的聚合,如:

db.users.aggregate([
    { $skip : 5 },           
    { $project:{ _id:0, name:1, } }     
])
$match–篩選匹配(瞭解)

match(CHINA)使$match:"area":"

CHINA""match”可以使用所有常規的查詢操作符(“gt""lt”、”in")"match”中使用地理空間操作符。
通常,在實際使用中應該儘可能將”matchmatch”,查詢可以使用索引。

$project–投射

其實就是從子文件中提取欄位,可以重新命名欄位,還可以在這些欄位上進行一些有意思的操作;
語法:

db.articles.aggregate({"$project":{"author":1,"_id":0})

預設情況下,如果文件中存在”_id”欄位,這個欄位就會被返回。
還可以將投射過的欄位進行重新命名。例如,可以將每個使用者文件的”_id”在返回結果中重新命名為”userId”:

db.articles.aggregate({"$project":{"userId":"$_id","_id":0}});

fieldname"fieldname"id""age”會被替換為”age”欄位的內容(可能是數值,可能是字串),”tag.3"tags4

相關推薦

MongoDB再次相逢聚合

聚合框架 MongoDB中聚合(aggregate)主要用於處理資料(諸如統計平均值,求和等),並返回計算後的資料結果。有點類似sql語句中的 count(*); 在MongoDB中,使用聚合框架可以對集合中的文件進行變換和組合。 聚合框架通過多個構件來建

MongoDB 學習簡介

簡介 MongoDB 是一個基於分散式 檔案儲存的NoSQL資料庫 由C++語言編寫,執行穩定,效能高 旨在為 WEB 應用提供可擴充套件的高效能資料儲存解決方案 檢視官方網站 MongoDB特

設計模式UML類圖以及類間關係泛化 、實現、依賴、關聯、聚合、組合

類圖用於描述系統中所包含的類以及它們之間的相互關係,幫助人們簡化對系統的理解,它是系統分析和設計階段的重要產物,也是系統編碼和測試的重要模型依據。接下來我們就來談談類圖的組成,在下一篇中我們將討論一下類圖之間的關係。 一、類圖的組成 1. 普通類 上圖

星際

輸出 detail return 技術 gin ace problem pau ans 星際之門(一) 時間限制:3000 ms | 內存限制:65535 KB 難度:3 描寫敘述 公元3000年。子虛帝國統領著N個星系,

spring註解概述

dsm 的人 src article service 優缺點 中一 auto 數據 Spring的核心是依賴註入(DI),而依賴註入的基礎是依賴信息的配置。這些配置稱之為元數據。在之前的的學習中。一直採用的是基於xml的配置,這些元數據配置在spring內部被註冊成為B

css重構

rdquo lan set 變化 部分 網站 一個 寬度 lang css重構之旅 >前言: 今年我大一,馬上就要大二了。從高三畢業暑假到大學的這一年馬上過去,馬上迎來大二生活.學習前端也有將近一年了。一昧去追求那些視覺的效果和相對高端和新穎的技術,反而忽略了最基礎

用SQL玩轉數據挖掘MADlib——安裝

system wan 商品 ase 關聯規則挖掘 樹模型 ats 調用 ability   一、MADlib簡介    MADlib是Pivotal公司與伯克利大學合作的一個開源機器學習庫,提供了精確的數據並行實現、統計和機器學習方法對結構化和非結構化數據進行分析,主要目的

Hadoop源碼學習HDFS

-a node bsp ima 數據 layout 版本號 name 技術   Hadoop的HDFS可以分為NameNode與DataNode,NameNode存儲所有DataNode中數據的元數據信息。而DataNode負責存儲真正的數據(數據塊)信息以及數據塊的ID。

前端 —— node.js摸爬打滾

turn lan name resp function oba ack val 括號 安裝: window下的安裝,node.js直接上官網下載:https://nodejs.org/en/ 選擇LTS,也就是版本號比較低的穩定版,下載下來後運行下載的文件進行安裝; 通

我的學習SQL盲註學習篇

網絡安全 dvwa sql盲註 我的學習之路,現在零基礎,是一個小白,請各位大牛批評指正!寫下這篇,是對自己的一個思路的整理,僅供參考。 Dvwa中登錄進入,首先在DVWA Security中設置等級為low,然後進入SQL Injection(blind),隨意輸入一個數字進行抓包,然後找

成長 GridLayout 布局

bsp ren 1.0 androi enc 代碼區 andro XML orien 效果圖 代碼區 <?xml version="1.0" encoding="utf-8"?><GridLayout xmlns:android="htt

Java面向對象編程繼承

col end 分情況討論 讓我 重要 san 封裝 pub void 前言 Java語言有三大重要的特性,分別是繼承、多態和封裝。今天我們就來聊聊繼承,繼承是復用程序代碼的有力手段,使用繼承我們會少寫許多代碼,也可以讓我們在寫代碼的時候邏輯變得更加清楚。 繼承的基本語法

2017年最新企業面試題shell

2017年最新企業面試題之shell2017年最新企業面試題之shell(一)**********************************************企業Shell面試題1:批量生成隨機字符文件名案例 ********************************************

Mybbatis學習

org unit primary sas oca manage result ava namespace 本例子為采用的mysql+maven+mybatis構建。   初步學習mybatis:     mybatis為一個半自動框架,相對於hibernate來說他更加輕巧

linux下源代碼搭建php環境mysql

運行程序 google chcon 系統環境 ncurses con 軟件 func ets 如今已經大半夜了,五一勞動節挺無聊的。 折騰一下吧。實在是睡不著。於是乎在電腦上安裝個虛擬機,然後呢,在虛擬機上搭建一個php環境。 首先我得安裝MYSQL吧。發現遇到

Hadoop2.6.0版本號MapReudce演示樣例WordCount

set pat -m 代碼 分享 ont extends gravity csdn 一、準備測試數據 1、在本地Linux系統/var/lib/hadoop-hdfs/file/路徑下準備兩個文件file1.txt和file2.tx

nsq源碼閱讀筆記nsqd——nsqd的配置解析和初始化

con views pos 直接 rgba 函數調用 程序 spa 重命名 配置解析nsqd的主函數位於apps/nsqd.go中的main函數首先main函數調用nsqFlagset和Parse進行命令行參數集初始化, 然後判斷version參數是否存在,若存在,則打印版

基礎篇集合List總結

intern ansi [] 集合 add 引用 public log ++ 1. List集合下常用的集合(ArrayList,LinkedList,Vector);   JVM垃圾回收GC,Java中采取了可達性分析法,標記所有從根節點開始的可達對象,未被標記的對象就

Hyperledger Fabric密碼模塊系列BCCSP

服務 編碼轉換 簡單 fabric 實現 支持 模塊 store block Fabric作為IBM主導的區塊鏈平臺,可謂是聯盟鏈中的一枝獨秀,現如今已經有100多個大型國際銀行、金融以及科技公司的加盟。與其說Fabric是區塊鏈的一種平臺,倒不如說是一個區塊鏈框架更

小白的linux學習

探索linux一、進入系統*)普通用戶登陸student 普通用戶,密碼student*)超級用戶登陸 —〉not listed 點擊未列出 username 提示輸入用戶名稱 —〉root root 為系統超級用戶 passw