gpt4 book ai didi

javascript - 在 MongoDB 中将字符串转换为 ISODate

转载 作者:可可西里 更新时间:2023-11-01 09:09:33 26 4
gpt4 key购买 nike

我是 MongoDB 的新手,我被困在字符串到日期的转换上。在数据库中,日期项以字符串类型存储为 "date":"2015-06-16T17:50:30.081Z"

我想按日期对文档进行分组并计算每一天的总和,因此我必须从日期字符串中提取年、月和日,并删除时、分和秒。我尝试了多种方法,但它们要么返回 1970-01-01 的日期类型,要么返回当前日期。

此外,我想将以下 mongo 查询转换为 python 代码,这让我遇到了同样的问题,我无法在 python 中调用 javascript 函数,并且 datetime 无法解析mongo 语法 $date 或者。

我试过:

new Date("2015-06-16T17:50:30.081Z")
new Date(Date.parse("2015-06-16T17:50:30.081Z"))
etc...

我很清楚字符串是用 Javascript 还是用 Python 给出的,我知道不止一种解析它的方法。但是我不知道如何在 MongoDB 查询中执行此操作。

  db.collection.aggregate([
{
//somthing
},
{
'$group':{
'_id':{
'month': (new Date(Date.parse('$approTime'))).getMonth(),
'day': (new Date(Date.parse('$approTime'))).getDate(),
'year': (new Date(Date.parse('$approTime'))).getFullYear(),
'countries':'$countries'
},
'count': {'$sum':1}

}
}
])

最佳答案

如果您可以确定输入日期字符串的格式并且您只是想获得唯一的 YYYYMMDD 的计数,那么只需 $project 子字符串并对其进行分组:

var data = [
{ "name": "buzz", "d1": "2015-06-16T17:50:30.081Z"},
{ "name": "matt", "d1": "2018-06-16T17:50:30.081Z"},
{ "name": "bob", "d1": "2018-06-16T17:50:30.081Z"},
{ "name": "corn", "d1": "2019-06-16T17:50:30.081Z"},
];

db.foo.drop();
db.foo.insert(data);

db.foo.aggregate([
{ "$project": {
"xd": { "$substr": [ "$d1", 0, 10 ]}
}
},
{ "$group": {
"_id": "$xd",
"n": {$sum: 1}
}
}
]);

{ "_id" : "2019-06-16", "n" : 1 }
{ "_id" : "2018-06-16", "n" : 2 }
{ "_id" : "2015-06-16", "n" : 1 }

关于javascript - 在 MongoDB 中将字符串转换为 ISODate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30872891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com