环境
mongodb 2.6
window7
RoboMongodb
需求
今天写联合主键了时,发现有两种写法,特此记录下:
写法一、用数组
db.gg_report_down_read.aggregate([
{
$match:
{
"status" : 1 ,
"account_name" : "F00015170" ,
"org_name" : { "$regex" : "熙玥投资"}}
},
{
$group:
{
//这里对_id,使用数组
"_id" : [ "$account_name" , "$org_name"] ,
"down_sum" : { "$sum" : "$down_sum"} ,
"read_sum" : { "$sum" : "$read_sum"}}
}
])
结果是:
{
"result" : [
{
"_id" : [
"$account_name",
"$org_name"
],
"down_sum" : 229,
"read_sum" : 3508
}
],
"ok" : 1
}
写法二、键值对
db.gg_report_down_read.aggregate([
{
$match:
{
"status" : 1 ,
"account_name" : "F00015170" ,
"org_name" : { "$regex" : "熙玥投资"}}
},
{
$group:
{
"_id" : { name:"$account_name" , orgName:"$org_name"} ,
"down_sum" : { "$sum" : "$down_sum"} ,
"read_sum" : { "$sum" : "$read_sum"}
}
}
])
结果:
/* 0 */
{
"result" : [
{
"_id" : {
"name" : "F00015170",
"orgName" : "熙玥投资"
},
"down_sum" : 229,
"read_sum" : 3508
}
],
"ok" : 1
}
总结
可以看出,它们返回的结果是略有差距,
使用键值对的方法:联合主键,是能可以显示相应的值的。
使用数组的话,联合主键是不会把值显示出来的