MongoDB èååµå ¥çæ°ç»ï¼æå¹³åæ°æ®+管éï¼
MongoDBå¦ä¹ æç¨ï¼https://piaosanlang.gitbooks.io/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 ( ææ¡£å°åï¼https://docs.mongodb.com/manual/reference/operator/aggregation/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 å好ç»äº