【发布时间】:2021-08-15 11:56:19
【问题描述】:
我的文档有这样的结构:
{
_id : ObjectId("60ae47705c4eb3d38a25b8c6")
number : 784
date : 2019-06-18T21:59:39.000+00:00
price : 5715
}
我想像这样检索每年的文件总和:
{
...
2019 : 28
2020 : 35
2021 : 15
}
这是我第一次使用 noSQL,所以我有点迷茫。
我试过这个:
Offre.aggregate([
{"$facet" : {
"2016" : [
{"$match" : {"dateLivraison" : {"$gte" : new Date(2015,31,12), "$lt" : new Date(2017,1,1)}}},
{"$count" : "2016"}
],
"2017" : [
{"$match" : {"dateLivraison" : {"$gte" : new Date(2016,31,12), "$lt" : new Date(2018,1,1)}}},
{"$count" : "2017"}
],
"2018" : [
{"$match" : {"dateLivraison" : {"$gte" : new Date(2017,31,12), "$lt" : new Date(2019,1,1)}}},
{"$count" : "2018"}
],
"2019" : [
{"$match" : {"dateLivraison" : {"$gte" : new Date(2018,31,12), "$lt" : new Date(2020,1,1)}}},
{"$count" : "2019"}
],
"2020" : [
{"$match" : {"dateLivraison" : {"$gte" : new Date(2019,31,12), "$lt" : new Date(2021,1,1)}}},
{"$count" : "2020"}
],
"2021" : [
{"$match" : {"dateLivraison" : {"$gte" : new Date(2020,31,12), "$lt" : new Date(2022,1,1)}}},
{"$count" : "2021"}
],
}},
{"$project" : {
"2016": {"$arrayElemAt" : ["$2016.2016",0]},
"2017": {"$arrayElemAt" : ["$2017.2017",0]},
"2018": {"$arrayElemAt" : ["$2018.2018",0]},
"2019": {"$arrayElemAt" : ["$2019.2019",0]},
"2020": {"$arrayElemAt" : ["$2020.2020",0]},
"2021": {"$arrayElemAt" : ["$2021.2021",0]}
}}
], (error,data) =>{
if(error){
console.log(error);
}else{
console.log(data);
res.json(data);
}
})
但它给了我一个空的结果
(对不起我的英语)
【问题讨论】:
标签: javascript node.js mongodb mongoose nosql