標籤:mongod 彙總 boolean 最大值 實現 邏輯 開始 運算 均值
現在詳細學習一下mongodb的資料庫操作。
查詢語句
db.xxx(集合name).find() # 查詢db.xxx(集合name).findOne() # 只返回一個db.xxx(集合name).findOne().pretty() # 返回結果格式化# 比較子等於,預設是等於判斷,沒有運算子,如:db.xxx(集合name).find({name:"xiao"})小於$lt,如:db.xxx(集合name).find({age:{$lt:30}})小於或等於$lte,如:db.xxx(集合name).find({age:{$lte:30}})大於$gt,如:db.xxx(集合name).find({age:{$gt:30}})大於或等於$gte,如:db.xxx(集合name).find({age:{$gte:30}})不等於$ne,如:db.xxx(集合name).find({age:{$ne:30}})# 邏輯運算子,即多條件查詢db.xxx(集合name).find({age:{$ne:30}, name:"xiaoming"}) # 預設邏輯與db.xxx(集合name).find({$or:[{age:{$ne:30}, name:"xiaoming"}]}) # 預設邏輯或# 範圍查詢db.xxx(集合name).find({age:{$in:[18,30]}}) # 在某個範圍db.xxx(集合name).find({age:{$nin:[18,30]}}) # 不在某個範圍# 正則$regexdb.xxx(集合name).find({name:{$regex:"^x"}})# 函數查詢$where,使用this代表本集合db.xxx(集合name).find({$where:function(){return this.age < 10}})# 限制返回數量db.xxx(集合name).find().limit(3)# 查詢位移db.xxx(集合name).find().skip(3) # 從第4條開始返回# 迴圈for(i=0;i<15;i++){db.xxx(集合name).insert({_id:i*2})}# 查詢返回一些欄位,需要返回設定1,不需要設定0db.xxx(集合name).find({},{name:1,age:0})# 排序sort(),1位升序,-1為降序db.xxx(集合name).find().sort({name:-1})# 返回個數count()db.xxx(集合name).count({name:"xiaoming"})# 去重db.xxx(集合name).distinct("name",{})
彙總函式
- 文法:db.集合名稱.aggregate({管道:{運算式}})
# 管道$group:將集合中的文檔分組,可用於統計結果$match:過濾資料,只輸出合格文檔$project:修改輸入文檔的結構,如重新命名、增加、刪除欄位、建立計算結果$sort:將輸入文檔排序後輸出$limit:限制彙總管道返回的文檔數$skip:跳過指定數量的文檔,並返回餘下的文檔$unwind:將數群組類型的欄位進行拆分# 運算式$sum:計算總和,$sum:1同count表示計數$avg:計算平均值$min:擷取最小值$max:擷取最大值$push:在結果文檔中插入值到一個數組中$first:根據資來源文件的排序擷取第一個文檔資料$last:根據資來源文件的排序擷取最後一個文檔資料
索引
keys,要建立索引的參數列表。如:{KEY:1},其中key表示欄位名,1表示升序排序,也可使用使用數字-1降序。options,選擇性參數,表示建立索引的設定。可選值如下:background,Boolean,在後台建立索引,以便建立索引時不阻止其他資料庫活動。預設值 false。unique,Boolean,建立唯一索引。預設值 false。name,String,指定索引的名稱。如果未指定,MongoDB會產生一個索引欄位的名稱和排序次序串聯。dropDups,Boolean,建立唯一索引時,如果出現重複刪除後續出現的相同索引,只保留第一個。sparse,Boolean,對文檔中不存在的欄位資料不啟用索引。預設值是 false。v,index version,索引的版本號碼。weights,document,索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其他索引欄位的得分權重。
# 建立普通索引db.集合.ensureIndex({屬性:1})# 建立唯一索引,實現唯一約束的功能db.集合.ensureIndex({"name":1},{"unique":true})# 建立聯合索引db.集合.ensureIndex({name:1,age:1})#查看集合所有索引db.集合.getIndexes()# 刪除索引db.集合.dropIndex(‘索引名稱‘)db.集合.dropIndexs() # 刪除集合所有的索引
MongoDB之資料庫命令操作(二)