中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB數據庫常用表達式有哪些

發布時間:2021-12-17 17:22:29 來源:億速云 閱讀:148 作者:iii 欄目:大數據

本篇內容介紹了“MongoDB數據庫常用表達式有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

聚合(aggregate)

簡單來說就是將上一次處理的結果交給下一個處理,最后一個處理完輸出

我們將每一次的處理叫做管道。

常用管道有:

$group:分組,用于統計結果

$match:用于過濾數據

$project:修改結構,重命名,增加,刪除字段,創建計算結果等

$sort:排序

$limit:顯示的文檔數(顯示幾行數據)

$skip:跳過前多少數量的文檔

$unwind:將數據類型字段拆分


常用表達式

$sum:求和

$avg:平均值

$min:獲取最小值

$max:獲取最大值

$push:插入一個數組

$first:獲取第一個文檔數據

$last:獲取最后一個文檔數據


實例:

# 按照性別分組,并計算有多少人

db.stu.aggregate(

{$group:{_id:"$sex",count:{$sum:1}}}

)

輸出:

{ "_id" : "女", "count" : 3 }

{ "_id" : "男", "count" : 3 }

# _id是指定用什么字段分組,需要寫成$sex, $sum:1表示此行數據計算為1

# 在上面的基礎上計算不同性別的平均值

db.stu.aggregate(

{$group:{_id:"$sex",count:{$sum:1},svg_age:{$avg:'$age'}}}

)

輸出:

{ "_id" : "女", "count" : 3, "agv_age" : 22.666666666666668 }

{ "_id" : "男", "count" : 3, "agv_age" : 19.333333333333332 }

# 不進行分組,求所有人的數量和年齡平均值

db.stu.aggregate(

{$group:{_id:null,count:{$sum:1},svg_age:{$avg:'$age'}}}

)

# 在按照性別分組,并計算有多少人,計算不同性別的平均值只取count值

# 并且對count進行重命名為sum,不現實其他

db.stu.aggregate(

{$group:{_id:'$sex',count:{$sum:1},agv_age:{$avg:'$age'}}},

{$project:{sum:'$count',_id:0}}

)

# _id會默認顯示,需要需要給個0,其他不寫則不顯示。

輸出:

{ "sum" : 3 }

{ "sum" : 3 }

# 在上述例子中過濾sum大于2的

db.stu.aggregate(

{$group:{_id:'$sex',count:{$sum:1},agv_age:{$avg:'$age'}}},

{$project:{sum:'$count',_id:0}}

{$match:{sum:{$gt:2}}}

)

# 排序

# 按照年齡升序,降序就是-1

db.stu.aggregate(

{$sort:{age:1}}

)

# $limit和$skip

# 查詢兩條消息

db.stu.aggregate(

{$limit:2}

)

# 跳過前兩條,顯示兩條

db.stu.aggregate(

{$skip:2}

{$limit:2}

)

# $unwind

# 對數組拆分

例如插入一條數據

db.test1.insert({_id:1,size:[111,222,333]})

# 拆分

db.test1.aggregate(

{$unwind:'$size'}

)

會輸出:

{"_id":1,"size":111}

{"_id":1,"size":222}

{"_id":1,"size":333}

索引

# 插入1000條數據,在MongoDB中可以執行js腳本的

# 你可以插入更多的數據看到更好的效果

for(i=0;i<1000;i++){db.test.insert({name:"test"+i,age:i})}

# 查詢一條數據

db.test.find({name:'test888'})

# 查看查詢的時間

db.test.find({name:'test888'}).explain('executionStats')

找到executionTimeMillis,后面就是查詢的時間單位是毫秒

# 建立索引

db.test.ensureIndex({name:1})

# 再次執行

db.test.find({name:'test888'}).explain('executionStats')

查看時間,對比沒有建立索引時候的時間,差距是很大的。

# 查看當前集合的索引

db.test.getIndexes()

# 刪除索引

db.test.dropIndex()

例如:db.test.dropIndex({name:1})

# 建立索引如果不想有重復的值可以指定唯一性

# 爬蟲去重復可以利用

db.test.ensureIndex({name:1},{'unique':true})

“MongoDB數據庫常用表達式有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

响水县| 招远市| 甘孜县| 乌鲁木齐市| 文成县| 瓦房店市| 云霄县| 斗六市| 武乡县| 惠州市| 昔阳县| 吴江市| 衡阳市| 文山县| 吴堡县| 灵武市| 乃东县| 榆林市| 伊金霍洛旗| 获嘉县| 民县| 开封县| 烟台市| 海宁市| 彭阳县| 库尔勒市| 内乡县| 宝应县| 独山县| 吐鲁番市| 阿巴嘎旗| 称多县| 云林县| 甘肃省| 军事| 莱芜市| 哈巴河县| 古田县| 蒲城县| 慈溪市| 墨竹工卡县|