我是MongoDB的新手,我想按分组日期查询mongoDB
数据:
{
"name":"Samuel",
"place":"Boston",
"time":"2020-2-05 5:15:10"
},
{
"name":"John Smith",
"place":"Amsterdam",
"time":"2017-20-4 22:10:40"
},
{
"name":"Darek",
"place":"Canada",
"time":"2020-2-05 15:23:25"
},
{
"name":"Kenio",
"place":"Tokyo",
"time":"2017-20-4 10:11:02"
}
我想要下面的格式:
[
{
"2020-2-05":[{
"name":"Samuel",
"place":"Boston",
"time":"2020-2-05 5:15:10"
},{
"name":"Darek",
"place":"Canada",
"time":"2020-2-05 15:23:25"
}]
},
{
"2017-20-4":[{
"name":"John Smith",
"place":"Amsterdam",
"time":"2017-20-4 22:10:40"
},{
"name":"Kenio",
"place":"Tokyo",
"time":"2017-20-4 10:11:02"
}]
}
]
有人可以帮助我吗,因为我没有任何想法来获取所需格式的输出。非常感谢您的帮助
答案 0 :(得分:1)
只需一个简单的$group
阶段并结合一些数据结构操作即可:
db.collection.aggregate([
{
$group: {
_id: {
$arrayElemAt: [
{
$split: [
"$time",
" "
]
},
0
]
},
roots: {
$push: "$$ROOT"
}
}
},
{
$addFields: {
newRoot: [
{
k: "$_id",
v: "$roots"
}
]
}
},
{
$replaceRoot: {
newRoot: {
$arrayToObject: "$newRoot"
}
}
}
])
我个人建议您开始将time
字段存储为Date而不是字符串,这将使您的生活更加轻松。