MongoDB基礎的操作(3)
阿新 • • 發佈:2018-12-24
排序
db.ccname.find().sort({"key":1})
#查詢結構按照key的資料進行排序,其中1為升序,-1為降序
skip(), limilt(), sort()三個放在一起執行的時候,執行順序為sort->skip->limit。
索引
db.ccname.ensureIndex({"key":1})
# 按照key的升序建立索引
ensureIndex()還有可選引數如下:
引數 | 型別 | 解釋 |
---|---|---|
background | Boolean | 建索引過程會阻塞其它資料庫操作,background可指定以後臺方式建立索引,即增加 “background” 可選引數。 “background” 預設值為false。 |
unique | Boolean | 建立的索引是否唯一。指定為true建立唯一索引。預設值為false. |
name | string | 索引的名稱。如果未指定,MongoDB的通過連線索引的欄位名和排序順序生成一個索引名稱。 |
dropDups | Boolean | 在建立唯一索引時是否刪除重複記錄,指定 true 建立唯一索引。預設值為 false. |
sparse | Boolean | 對文件中不存在的欄位資料不啟用索引;這個引數需要特別注意,如果設定為true的話,在索引欄位中不會查詢出不包含對應欄位的文件.。預設值為 false. |
expireAfterSeconds | integer | 指定一個以秒為單位的數值,完成 TTL設定,設定集合的生存時間。 |
v | index version | 索引的版本號。預設的索引版本取決於mongod建立索引時執行的版本。 |
weights | document | 索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其他索引欄位的得分權重。 |
default_language | string | 對於文字索引,該引數決定了停用詞及詞幹和詞器的規則的列表。 預設為英語 |
language_override | string | 對於文字索引,該引數指定了包含在文件中的欄位名,語言覆蓋預設的language,預設值為 language. |
用法:
db.ccname.ensureIndex({"key":1},{unique:true})
聚合
db.ccname.aggregate()
下面來實驗一下它的用法:
#定義4個人的資料資訊
a = {"name":"tom","age":15,"sex":"男"}
b = {"name":"tony","age":17,"sex":"男"}
c = {"name":"lucy","age":16,"sex":"女"}
d = {"name":"nami","age":13,"sex":"女"}
#將4條資料新增到集合people中
db.people.insert(a)
db.people.insert(b)
db.people.insert(c)
db.people.insert(d)
查詢男生女生各有所少人:
db.people.aggregate({$group:{_id:"$sex",count:{$sum:1}}})
顯示結果為:
{ "_id" : "女", "count" : 2 }
{ "_id" : "男", "count" : 2 }
表示式
表示式 | 解釋 |
---|---|
$sum | 計算總和。 |
$avg | 計算平均值。 |
$min | 獲取集合中所有文件對應值得最小值。 |
$max | 獲取集合中所有文件對應值得最大值。 |
$push | 在結果文件中插入值到一個數組中。 |
$addToSet | 在結果文件中插入值到一個數組中,但不建立副本。 |
$first | 根據資源文件的排序獲取第一個文件資料。 |
$last | 根據資源文件的排序獲取最後一個文件資料 |
管道
$project:修改輸入文件的結構。可以用來重新命名、增加或刪除域,也可以用於建立計算結果以及巢狀文件。
$match:用於過濾資料,只輸出符合條件的文件。$match使用MongoDB的標準查詢操作。
$limit:用來限制MongoDB聚合管道返回的文件數。
$skip:在聚合管道中跳過指定數量的文件,並返回餘下的文件。
$unwind:將文件中的某一個數組型別欄位拆分成多條,每條包含陣列中的一個值。
$group:將集合中的文件分組,可用於統計結果。
$sort:將輸入文件排序後輸出。
$geoNear:輸出接近某一地理位置的有序文件。