mongodb的数据结构如下:
{
"_id" : ObjectId("61d569a96cf0454e7b832218"),
"billingCycle" : {
"year" : 2022,
"month" : 1
},
"tenantId" : NumberLong(1432300453542105088),
"userId" : NumberLong(15),
"resources" : [
{
"type" : "COMPUTE",
"regions" : [
{
"region" : "north1",
"platforms" : [
{
"platform" : "WINDOWS",
"usages" : [
{
"model" : "p1.c1.2",
"price" : "0.627100",
"usage" : "0.1156",
"cost" : "0.0725"
}
]
},
{
"platform" : "LINUX",
"usages" : [
{
"model" : "p1.c1.2",
"price" : "0.627100",
"usage" : "3780.0000",
"cost" : "2370.4380"
}
]
}
],
"usages" : [
{
"model" : "p1.c1.2",
"price" : "0.627100",
"usage" : "3780.1156",
"cost" : "2370.5105"
}
],
"cost" : "2370.5105"
},
{
"region" : "ap2",
"platforms" : [
{
"platform" : "WINDOWS",
"usages" : [
{
"model" : "s2.c1.2",
"price" : "0.714200",
"usage" : "0.2567",
"cost" : "0.1834"
}
]
},
{
"platform" : "LINUX",
"usages" : [
{
"model" : "s2.c1.2",
"price" : "0.313500",
"usage" : "1.3789",
"cost" : "0.4323"
}
]
}
],
"usages" : [
{
"model" : "s2.c1.2",
"price" : "0.313500",
"usage" : "1.6356",
"cost" : "0.6156"
}
],
"cost" : "0.6156"
}
],
"cost" : "2371.1261"
},
{
"type" : "STORAGE",
"regions" : [
{
"region" : "north1",
"platforms" : [],
"usages" : [
{
"model" : "STORAGE",
"price" : "0.675600",
"usage" : "115.8058",
"cost" : "78.2416"
}
],
"cost" : "78.2416"
},
{
"region" : "ap2",
"platforms" : [],
"usages" : [
{
"model" : "STORAGE",
"price" : "0.337800",
"usage" : "0.1136",
"cost" : "0.0384"
},
{
"model" : "IMAGE",
"price" : "0.176200",
"usage" : "0.0021",
"cost" : "0.0004"
}
],
"cost" : "0.0388"
}
],
"cost" : "78.2804"
},
{
"type" : "TRAFFIC",
"regions" : [
{
"region" : "north1",
"platforms" : [],
"usages" : [
{
"model" : "DOWNLOAD",
"price" : "1.186800",
"usage" : "0.0006",
"cost" : "0.0008"
}
],
"cost" : "0.0008"
},
{
"region" : "ap2",
"platforms" : [],
"usages" : [
{
"model" : "DOWNLOAD",
"price" : "0.593400",
"usage" : "0.0001",
"cost" : "0.0001"
}
],
"cost" : "0.0001"
}
],
"cost" : "0.0009"
}
],
"totalCost" : "2449.41",
"createdAt" : {
"dateTime" : ISODate("2022-01-05T09:49:29.182Z"),
"offset" : "Z"
},
"createdTime" : NumberLong(1641376169000),
"_class" : "com.fastonetech.billing.domain.bill.v1.BillV1"
}
针对上面的数据,只想统计出具体的消费情况。比如:
mongodb的查询语句:
db.getCollection('bills_v1').find({"tenantId":1461884485267230720,"userId":213},{ billingCycle:1, totalCost: 1,resources:{type:1,cost:1,regions:{region:1,cost:1}} } )
{ billingCycle:1, totalCost: 1,resources:{type:1,cost:1,regions:{region:1,cost:1}}
需要那些字段,需要在字段的后面加上1,比如billingCycle:1 当涉及到嵌套的情况,可以使用{ 字段名:{字段名:1,字段名:1} } 如果涉及到多层嵌套的情况,可以使用{字段名:{字段名:1,字段名:{字段名:1,字段名:1}}}
查询出来的出来的结果精简为:
{
"_id" : ObjectId("62674f032366603fb958ac9c"),
"billingCycle" : {
"year" : 2022,
"month" : 4
},
"resources" : [
{
"type" : "STORAGE",
"regions" : [
{
"region" : "ap2",
"cost" : "0.5047"
},
{
"region" : "north1",
"cost" : "0.5930"
},
{
"region" : "north3",
"cost" : "0.0503"
}
],
"cost" : "1.1480"
},
{
"type" : "COMPUTE",
"regions" : [
{
"region" : "ap2",
"cost" : "39.6336"
},
{
"region" : "north1",
"cost" : "34.1209"
},
{
"region" : "north3",
"cost" : "0.2985"
}
],
"cost" : "74.0530"
},
{
"type" : "TRAFFIC",
"regions" : [
{
"region" : "ap2",
"cost" : "0.0003"
},
{
"region" : "north1",
"cost" : "0.0095"
}
],
"cost" : "0.0098"
}
],
"totalCost" : "75.22"
}
|