摘要:先進行過濾,再分組實例解釋進行過濾,這里利用兩個字段進行過濾。聚合操作可以對分組的數(shù)據(jù)執(zhí)行如下的表達式計算計算總和。根據(jù)分組,獲取集合中所有文檔對應(yīng)值得最大值。將指定的表達式的值添加到一個數(shù)組中。
先進行過濾,再分組
1、實例:
db.getCollection("UpMsgItem").aggregate( [ {$match : { createTime : {$gt : 1513568964539, $lte : 1516160964542 }, wxAppId : "wx8bd8a617c9ae66ed" }}, {$group : {_id : "$wxOpenId"}} ])
2、解釋:
match進行過濾,這里利用createTime、wxAppId兩個字段進行過濾。過濾之后的數(shù)據(jù),根據(jù)_id進行分組。$group對應(yīng)的值就是分組以后返回的數(shù)據(jù),可以在里面進行聚合操作。
多個字段進行分組
1、實例:
db.getCollection("UpMsgItem").aggregate( [ {$match : { createTime : {$gt : 1519613221561, $lte : 1519699621562 }}}, { $group : {"_id": { "wxOpenId" : "$wxOpenId", "wxAppId": "$wxAppId"}} } ])
計算分組以后的記錄數(shù):
1、實例:
db.getCollection("UpMsgItem").aggregate( [ {$match : { createTime : {$gt : 1507508412000, $lte : 1522881012000 }}}, { $group : {"_id": { "wxOpenId" : "$wxOpenId", "wxAppId": "$wxAppId"}} } ]).map(function(record, index){ print(index); });
先過濾,在進行分組、聚合操作:
1、實例:
db.getCollection("UpMsgItem").aggregate( [ {$match : { createTime : {$gt : 1513568964539, $lte : 1516160964542 }, wxAppId : "wx8bd8a617c9ae66ed" }}, {$group : {_id : "$wxOpenId", sumCreateTime: {$sum: "$createTime"}}} ])
2、解釋:
這里的sumCreateTime就是聚合后的結(jié)果,對createTime字段進行聚合。
group聚合操作:
$group:可以對分組的數(shù)據(jù)執(zhí)行如下的表達式計算:
$sum:計算總和。 $avg:計算平均值。 $min:根據(jù)分組,獲取集合中所有文檔對應(yīng)值得最小值。 $max:根據(jù)分組,獲取集合中所有文檔對應(yīng)值得最大值。 $push:將指定的表達式的值添加到一個數(shù)組中。 $addToSet:將表達式的值添加到一個集合中(無重復(fù)值)。 $first:返回每組第一個文檔,如果有排序,按照排序,如果沒有按照默認的存儲的順序的第一個文檔。 $last:返回每組最后一個文檔,如果有排序,按照排序,如果沒有按照默認的存儲的順序的最后個文檔。
同時使用大于、小于查詢
db.getCollection("UpMsgItem").find({ "createTime" : {$gt : 1519556225560, $lt : 1519642625562}, "ea" : "2" }).count();
查看字段是否存在
db.getCollection("log_original").find({ exception : { $exists: true }})
兩個字段之間比較
{ $where : "this.updateTime > this.createTime"}
與操作:
db.getCollection("DownMsgItem").find({createTime : {$lte :1528646400000, $gte : 1529251200000}})
增加索引
db.getCollection("customer_evaluation_statistics").ensureIndex({"fsEa":1, "appId":1, "createTime" : 1})
注意點1、mongo的update、findAndModify操作,如果沒有set字段,會進行全量覆蓋
參考:http://blog.csdn.net/congcong...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19197.html
摘要:舉個栗子你有一個箱子,里面有一個兒子級別和孫子級別的箱子共層現(xiàn)在你把孫子級別的箱子單獨拿出來,把整個箱子替換掉就是這種思想。。。自己體會吧這種語法,好像列表的切片賦值。。官方建議我們用它的好處是把和由兩個函數(shù)調(diào)用變?yōu)閭€參數(shù)傳進去了。 閱讀須知 由于是對比書寫: M: 代表 Mongo原生語法 P: 代表 PyMongo書寫方法 后面提到:同上 字眼: ...
摘要:容器訪問以為例,在原始的文件中,如下上面的配置,本地主機是無法訪問容器的,我們至少需要暴露出一個端口。查看,的默認端口其實是,而這里寫成也是有原因的。 任何事情的成功都需要掐準時間 上一節(jié)mongo EOF中,關(guān)于容器的配置,只是粗略的使用了Docker-Compose-MongoDB-Replica-Set項目提供好的docker-compose.yml文件。在使用過程中,我發(fā)現(xiàn)這個...
摘要:啟動啟動服務(wù)輸入命令進入操作終端,需要新開窗口基礎(chǔ)語法查看當前所有的數(shù)據(jù)庫查看當前所有的數(shù)據(jù)庫新建數(shù)據(jù)庫創(chuàng)建的數(shù)據(jù)庫這個時候是看不到的,因為數(shù)據(jù)庫里沒有任何東西。查找集合所有信息班創(chuàng)建一個集合,并插入一條數(shù)據(jù),數(shù)據(jù)里是帶有對象的。 1、啟動mongodb mongod -f /usr/local/etc/mongod.conf //啟動服務(wù) mongo //輸入命令進入mongo操作...
摘要:總結(jié)說明非數(shù)據(jù)庫的用戶不能使用數(shù)據(jù)庫命令,比如等。數(shù)據(jù)庫中的用戶被視為超級用戶即管理員。 MongoDB MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的,語法有點類似javascript面向?qū)ο蟮牟樵冋Z言,它是一個面向集合的,模式自由的文檔型數(shù)據(jù)庫。 mongodb與 mysql性能比較 showImg(https://seg...
閱讀 4511·2021-09-22 14:57
閱讀 555·2019-08-30 15:56
閱讀 2658·2019-08-30 15:53
閱讀 2234·2019-08-29 14:15
閱讀 1684·2019-08-28 17:54
閱讀 553·2019-08-26 13:37
閱讀 3472·2019-08-26 10:57
閱讀 1041·2019-08-26 10:32