MongoDB 聚合嵌入的陣列(扁平化資料+管道)
先看下要操作的主要資料結構:
{
"_id" : "000015e0-3e9c-40b3-bd0d-6e7949f455c0",
"evaluation_type" : 2,
"reply_count" : 5,
"type" : 3,
"content" : "怎麼編制餘額調節表",
"tips" : [
{
"_id" : 1000,
"tip_name" : "會計基礎"
}
],
"teach_id" : 10298153
}
看這個文件資料,現在要以 tips 陣列下的 _id 做資料的分組查詢。在查詢條件中使用 "tips.0._id":1000 過濾資料是可以生效的,但用在 aggregate 聚合查詢中的 group 分組條件中是不行的,必須得先使用 $unwind (文件地址)把 tips 這個陣列物件變成扁平的結構(把陣列中的每個物件拆分出來與當前文件重新組合,達到消陣列的效果)
上面資料根據以下查詢語句的前後變化
扁平化前:
db.getCollection('topics').find({"teach_id":10010943})
扁平化後:
db.getCollection('topics').aggregate({'$match':{"teach_id":10010943}},{'$unwind':'$tips'})
關注扁平化前後 tips 由陣列變成了物件
通過 {'$unwind' : '$tips'} 對文件扁平化結構之後,然後再用 pipeline (管道)的方式做聚合就好了,
可以直接根據 tips._id 進行分組了
查詢語句:
db.getCollection('topics').aggregate({'$match':{"teach_id":10010943}},{'$unwind':'$tips'},
{'$group':{'_id':{"tipId":'$tips._id',"tipName":'$tips.tip_name',"evaluationType":'$evaluation_type'},"count":{'$sum': 1}}},
{'$project':{"tipId":'$_id.tipId',"tipName":'$_id.tipName',"evaluationType":'$_id.evaluationType',"count":'$count'}})
完美滴根據 tipId,tipName,evaluationType 分好組了
關注公眾號,分享乾貨,討論技術
相關文章
- mongodb 聚合管道MongoDB
- MongoDB(12)- 查詢嵌入文件的陣列MongoDB陣列
- 陣列扁平化陣列
- 陣列去重和陣列扁平化陣列
- 快速掌握mongoDB(二)——聚合管道和MapReduceMongoDB
- JS陣列專題1️⃣ ➖ 陣列扁平化JS陣列
- 多維陣列扁平化陣列
- JS 扁平化 (flatten) 陣列JS陣列
- web前端陣列處理之扁平化陣列Web前端陣列
- mongoDB資料庫之聚合MongoDB資料庫
- js陣列去重、扁平化函式JS陣列函式
- 5種方式實現陣列扁平化陣列
- JavaScript陣列常用方法解析和深層次js陣列扁平化JavaScript陣列JS
- reduce實現filter,map 陣列扁平化等Filter陣列
- PostgreSQL 對陣列元素聚合(qbit)SQL陣列
- 一文搞定陣列扁平化(超全面的陣列拉平方案及實現)陣列
- MongoDB的聚合筆記MongoDB筆記
- 面試官:JavaScript如何實現陣列拍平(扁平化)方法?面試JavaScript陣列
- 資料結構 - 陣列資料結構陣列
- 資料結構-陣列資料結構陣列
- columns陣列形式展示不同列資料陣列
- MongoDB - 聚合查詢MongoDB
- js 陣列返回,資料排序JS陣列排序
- 資料結構2——陣列資料結構陣列
- 資料結構之「陣列」資料結構陣列
- 資料結構之陣列資料結構陣列
- 資料結構之陣列和矩陣--矩陣&不規則二維陣列資料結構陣列矩陣
- MongoDB系列--深入理解MongoDB聚合(Aggregation )MongoDB
- Java版-資料結構-佇列(陣列佇列)Java資料結構佇列陣列
- mongodb聚合操作記錄MongoDB
- 大資料教程分享實用的大資料之陣列大資料陣列
- 陣列演算法 往陣列尾部新增一條資料1202陣列演算法
- 利用陣列處理批次資料陣列
- 資料結構——樹狀陣列資料結構陣列
- 使用陣列建立分頁資料陣列
- php資料型別之陣列PHP資料型別陣列
- Java版-資料結構-陣列Java資料結構陣列
- Ext迭代陣列訪問資料陣列