1. 程式人生 > >MongoDB_09之計數去重分組等

MongoDB_09之計數去重分組等

1.count 計數
查詢persons中美國學生的人數
  db.persons.find({country:"USA"}).count()
2.distinct 去重
查詢出persons中一共有多少個國家,分別是什麼
  db.runCommand({distinct:"persons",key:"country"}).values //這裡的values為陣列的鍵 如:values:[China,USA]
3.group 分組
  語法:
  db.runCommand({group:{
    ns:集合名字,
    key:分組的鍵物件,
    initial:初始化累加器,
    $reduce:組分解器,
    condition,條件,
    finalize:組完成器
  }})
//分組首先會按照key進行分組,每組的每一個文件全要執行$reduce的方法,它接收2個引數,一個是組內本條記錄,一個是累加資料
例:請查出persons中每個國家學生數學成績最好的學生資訊(必須在90分以上)  //思路:按國家分組,然後查詢每組中最好的,然後在取出成績在90分以上的學生
db.runCommand({group:{
    ns:"persons",
    key:{"country":true},
    initial:{m:0},
    $reduce:function(doc,prev) {
      if(doc.m > prev.m) {
         prev.m = doc.m;
         prev.name = doc.name;
         prev.country = doc.country;
      }
    },
    condition:{m:{$gt:90}}
}})
使用完成器對以上查出來的結果進行描述顯示
db.runCommand({group:{
    ns:"persons",
    key:{"country":true},
    initial:{m:0},
    $reduce:function(doc,prev) {
      if(doc.m > prev.m) {
         prev.m = doc.m;
         prev.name = doc.name;
         prev.country = doc.country;
      }
    },
    condition:{m:{$gt:90}},
    finalize:function(prev) {
      prev.m = prev.name + "Math scores" + prev.n
   }
}})
4.用函式格式化分組的鍵
如果在集合中出現鍵country和counTry同時存在,分組又如何解決呢?
用下面這種方式替換上面的key
  $keyf:function(doc) {
return {coutry:doc.counTry}
  }

命令執行器runCommand
5.用命令執行一次刪除集合的操作
db.runCommand({drop:"map"})

常用shell命令
6.查詢伺服器版本號和主機作業系統
db.runCommand({buildInfo:1})
7.查詢執行命令的集合的詳細資訊,大小,空間,索引等
db.runCommand({collStats:"persons"})
8.查詢操作本集合最後一次錯誤資訊
db.runCommand({getLastError:"persons"})



相關推薦

MongoDB_09計數分組

1.count 計數 查詢persons中美國學生的人數 db.persons.find({country:"USA"}).count() 2.distinct 去重 查詢出persons中一共

SQL腳本分組統計

數據 values name var logs 記錄 寫入 varchar 分享 需求:首先有一張表記錄學生姓名、科目和成績,然後模擬插入幾條數據,腳本如下: create table score ( Name nvarchar(20),--姓名

java8處理list集合分組操作

//分組統計重複String的名稱和數量 List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("a"); Map<String,Long> map

JavaScript系列陣列

陣列去重方法是老生常談,特別是一些bat大廠的面試都會提到這個問題,既然是常談,那麼我也來談談 巢狀迴圈(相容性好) 使用迴圈巢狀,最外層迴圈 array,裡面迴圈 res,如果 array[i] 的值跟 res[j] 的值相等,就跳出迴圈,如果都不等於,說明元素是唯一的,這時候 j 的值就

mysql資料並記錄總數

引用:http://blog.sina.com.cn/s/blog_6c9d65a10101bkgk.htmlhttp://www.jb51.net/article/39302.htm1、使用distinct去重(適合查詢整張表的總數)有多個學校+教師投稿,需要統計出作者的總

Java 資料結構List

我們可以假設這樣一個流程:從網路上下來一組json資料,不管同步還是非同步,第一個就是想先找個容器把他接下來,順手就把list操起來了,然後就一直add,add,,,但是問題來了,我們不管三期二十七的把資料都接下來了,從來就沒注意資料有重複的怎麼去除呢,遍歷吧,

JAVAHashSet(本身無序不重複,針對物件)

return id+":"+name;}//通過重寫這兩個方法實現物件的去重(eclipse可自動生成)@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((id == n

JavaScript專題陣列

前言 陣列去重方法老生常談,既然是常談,我也來談談。 雙層迴圈 也許我們首先想到的是使用 indexOf 來迴圈判斷一遍,但在這個方法之前,讓我們先看看最原始的方法: var array = [1, 1, '1', '1']; function unique(ar

JS陣列

var aList = [1,2,3,4,4,3,2,1,2,3,4,5,6,5,5,3,3,4,2,1]; var aList2 = []; for(var i=0;i<aList.leng

前端面試系列陣列

1. 雙迴圈去重原理: 定義一個包含原始陣列第一個元素的陣列,然後遍歷原始陣列,對原始陣列進行遍歷,將原始陣列中的每一個元素與新陣列中的每一個元素進行對比,如果不重複就新增到新數組裡,最後返回新陣列。這種方式很耗費時間喝記憶體,不適合大型陣列。 // 雙重迴圈去重,原理

List使用Stream流進行集合Collection的各種運算彙總:對BigDecimal求和,某個欄位的和、最大值、最小值、平均值,欄位,過濾

       寫Java介面的朋友都知道,Java 8的更新,經常會用到過濾 list<Object> 裡的資料,本文就對List使用Stream流進行集合Collection的各種運算做一個彙總! 優勢:       &nbs

pandas基礎屬性方法隨機整理(三)--- 描述統計/計數/分組排序

分組和排序 Series.value_counts() & drop_duplicates() 資料集: baby_names.info() <class 'pandas.core.frame.DataFrame'> Rang

mysql分組後計算分組的組數和根據某個欄位計數

計算分組的組數SELECT count(1) from (select COUNT(1) as sum FROM TM_APP_MAIN A INNER JOIN TM_APP_PRIM_APPLIC

iOS數組的,判空,刪除元素,刪除復元素

ack 如果 tle sar abc 朋友 計數 led trac 一: 去重 有時需要將NSArray中去除重復的元素,而存在NSArray中的元素不一定都是NSString類型。今天想了想,加上朋友的幫助,想到兩種解決辦法,先分述如下。 1.利用NSDictionar

二分法數組和找最小值

如果 math mat n) 分法 type arr push else if 二分&數組去重 <script type="text/javascript"> var arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 5,

php數組合並,反轉,,添加元素

去重 長度 關聯數組 reverse ever merge 定義 var_dump 反轉 //參數默認值//function abc($a,$b,$c = 0){// echo $a,$b,$c;//}//abc(1,3);//結果等於130;//echo "<

Java大數據位圖法(無復排序,復排序,復排序,數據壓縮)

align system 容器類 底層 修改 歸並排序 概念 ppr long 大數據位圖法(無重復排序,重復排序,去重復排序,數據壓縮)之Java實現 位圖法介紹 位圖的基本概念是用一個位(bit)來標記某個數據的存放狀態,由於采用了位為單位來存放數據,所以節

【python常見面試題】python 中對list的多種方法

ont dex 如果 原來 簡單 div set方法 ron 職位 在python相關職位的面試過程中,會對列表list的去重進行考察。(註意有時會要求保證去重的順序性) 1、直觀方法 1 li=[1,2,3,4,5,1,2,3] 2 new_li=[] 3 for

thinkphp計數據sql

別人 table rom pos auth 計數 style user 不同的 DISTINCT 方法用於返回唯一不同的值 官方文檔給出的示例: $Model->distinct(true)->field(‘userName‘)->select();

python使用set對列表,並保持列表原來順序

原來 div 無重復 列表 mys ddr body afa key #原始方法,但是會打亂順序 mylist = [1,2,2,2,2,3,3,3,4,4,4,4]myset = set(mylist) #myset是另外一個列表,裏面的內容是mylist裏面的無重復 項