后面有mongoDB文件。
{
"_id" : ObjectId("5ac06b6fb49124f4e5602817"),
"status" : -1,
"createdAt" : ISODate("2018-03-31T05:17:35.557Z")
}
{
"_id" : ObjectId("5ac0b51cb08b6c0014d1d0c1"),
"status" : 0,
"createdAt" : ISODate("2018-04-01T10:31:56.199Z")
}
{
"_id" : ObjectId("5ac0b538b08b6c0014d1d0c2"),
"status" : 2,
"createdAt" : ISODate("2018-04-01T10:32:24.542Z")
}
我使用$ group,$ match,$ sum我只能返回:
{
_id: {
month: 4,
day: 1,
year: 2018
},
count: 2
}
我想要回归:
{
_id: {
month: 4,
day: 1,
year: 2018
},
count : 2,
countStatus0 : 1,
countStatus2 : 1
}
我希望你能帮助我...... 非常感谢。 对不起,我的英语不好。
答案 0 :(得分:0)
您可以尝试以下聚合:
if (id == R.id.nav_camera) {
//code to inflate another layout inplace of current layout
//setContentView(R.layout.another_layout1);
} else if (id == R.id.nav_gallery) {
//code to inflate another layout inplace of current layout
//setContentView(R.layout.another_layout2);
}
要获得每个状态的总和和总和,您必须使用db.col.aggregate([
{
$group: {
_id: {
year: { $year: "$createdAt" },
month: { $month: "$createdAt" },
day: { $dayOfMonth: "$createdAt" },
status: "$status"
},
count: { $sum: 1 }
}
},
{
$group: {
_id: {
year: "$_id.year",
month: "$_id.month",
day: "$_id.day"
},
count: { $sum: "$count" },
statuses: { $push: { k: { $concat: ["status", {$substr:["$_id.status", 0, -1 ]}] }, v: "$count" } }
}
},
{
$project: {
_id: 1,
count: 1,
statuses: { $arrayToObject: "$statuses" }
}
},
{
$replaceRoot: {
newRoot: {
$mergeObjects: [ "$$ROOT", "$statuses" ]
}
}
},
{
$project: {
statuses: 0
}
}
])
两次。每个部分状态都可以转换为一对$group
和k
,其中v
是动态生成的字符串,是key
的串联,其值类似status
},status0
。拥有这些对后,您可以使用$arrayToObject从该数组生成对象字段。然后,您可以使用$mergeObjects和$replaceRoot将根与嵌套的status2
对象合并。
这里有一个技巧。由于MongoDB不允许将字符串与double连接,我们必须在double上使用statuses
将其转换为字符串。