1. 程式人生 > >MongoDB基礎的操作(3)

MongoDB基礎的操作(3)

排序

 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:輸出接近某一地理位置的有序文件。