monggodb聚合操作可能会合计数组对象中的数据
$unwind将数组中的数据分割为多个数据,数组外的公共数据相同
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84 e ) )、' name': 'dahai )、' data': '、(k1 _ name ' 33666 )
$unwind之后是三个数据
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84 e ) )、' name': 'dahai )、' data ' : ' k1 _ name ' 3:
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84 e ) )、' name': 'dahai )、' data ' : ' k2 _ name ' 3:
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84 e ) )、' name': 'dahai )、' data ' : ' k3 _ name ' 3:
然后,按name组data.score进行合计即可
测试代码怎么样?
importpymongoclient=pymongo.mongo client (f ' MongoDB ://root : root @ 172.16.1.17336027017 ' ) db=client ' score': 78},{'k2_name': '数学',' score': 90} ',{'Score'3360} { 'name': '感性烤鸡,',' DDD {'k2_name': '数学' ' Score'336080}}# cur=db.user.insert_many(data ) rows=db.user.find (forrowinrows 3360 print ) row n ' ) rows=db.user.aggregreging ($unwind ) : ) $ data } ) forrowinRows3360prinnng n ' ) rows=db.user.aggregate (($ match 65: ),($unwind
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84 e ) )、' name': 'dahai )、' data': '、(k1 _ name ' 33666 )
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84f ) )、' name': (感性烤鸡)、' data': )、(k1 _ name ' 3: )
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84 e ) )、' name': 'dahai )、' data ' : ' k1 _ name ' 3:
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84 e ) )、' name': 'dahai )、' data ' : ' k2 _ name ' 3:
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84 e ) )、' name': 'dahai )、' data ' : ' k3 _ name ' 3:
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84f ) )、' name': (感性烤鸡)、' data':(k1_name': )。
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84f ) )、' name': (感性烤鸡)、' data':(k2_name': )。
{ ' _ id ' : objectid (61a 783 DD 74 e 4719 e 37 F6 e 84f ) )、' name': (感性烤鸡)、' data': ) k3_name': )。
{'_id': '感性烤鸡',' total_score': 268}
{'_id': 'dahai ',' total_score': 248}