gpt4 book ai didi

MongoDB:将日期字符串 (mm/dd/yyyy) 转换为 Unix 时间戳

转载 作者:可可西里 更新时间:2023-11-01 10:50:30 31 4
gpt4 key购买 nike

只是练习我的 MongoDB 查询,我遇到了字段数据类型的问题。

我目前使用 Robomongo 作为 GUI 来访问生产数据库。

我的文档结构如下:

Robomongo Document Structure

是否有 MongoDB 运算符或方式/方法将当前采用 mm/dd/yyyy 格式的 date 字段值转换为 Unix 时间戳,以便我们可以执行过滤操作?

最佳答案

您可以迭代所有项目并通过转换为 Date 逐一更新。下面是将日期从 mm/dd/yyyy 转换为 ISODate 的示例:

db.test.find().forEach( function(res){

if (typeof(res.date)=="string"){
var arr = res.date.split("/");
res.date = new Date(arr[2], arr[0] - 1, arr[1]);
db.test.save(res)
}
}
)

对于 Unix 时间戳(从纪元开始的毫秒),您可以从 Date 调用 getTime() :

db.test.find().forEach( function(res){

if (typeof(res.date)=="string"){
var arr = res.date.split("/");
res.date = new Date(arr[2], arr[0] - 1, arr[1]).getTime();
db.test.save(res)
}
}
)

请注意,这些日期将被转换为 UTC 格式,因此您可能希望在进行转换之前临时更改您的时区

您还可以使用 bulk update如果你想优化更新性能

您也可以将日期转换为 yyyy-mm-dd,这将保留排序(检查 this post)。下面将把你的日期字段分解成daymonthyear,用新的格式设置日期字段并将输出写入一个名为测试2:

db.test.aggregate([{
$project: {
startTime: 1,
endTime: 1,
date: {
$let: {
vars: {
year: { $substr: ["$date", 6, 10] },
month: { $substr: ["$date", 0, 2] },
dayOfMonth: { $substr: ["$date", 3, 2] }
},
in : { $concat: ["$$year", "-", "$$month", "-", "$$dayOfMonth"] }
}
}
}
},{
$out :"test2"
}])

关于MongoDB:将日期字符串 (mm/dd/yyyy) 转换为 Unix 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41387793/

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