9

我正在执行测试以确保我得到正确的日期。

我目前的测试是:选择 mongodb ISODate 格式的日期并将其转换为数值(自 1970 年以来的毫秒数),反之亦然

例子:

var date_test = ISODate ("2013-07-26T22:35:40.373Z")

这个日期的数值是多少?哪个命令用于获取此信息?

4

3 回答 3

11

只需调用该getTime()方法,即可获得自 1970/01/01 以来的毫秒数

> var date_test = ISODate ("2013-07-26T22:35:40.373Z")
> date_test.getTime()
1374878140373

要将毫秒转换为日期,请构造一个新的日期对象:

> new Date(1374878140373)
ISODate("2013-07-26T22:35:40.373Z")
于 2013-09-19T13:58:42.413 回答
3

开始Mongo 4.0$toLong聚合运算符可以应用于 aDate以获取时间戳:

// { mydate: ISODate("2019-06-23T15:52:29.576Z")
db.collection.aggregate({ $project: { timestamp: { $toLong: "$mydate" } } })
// { timestamp: NumberLong("1561305149576") }

反之亦然$toDate

// { timestamp: NumberLong("1561305149576") }
db.collection.aggregate({ $project: { mydate: { $toDate: "$timestamp" } } })
// { mydate: ISODate("2019-06-23T15:52:29.576Z") }
于 2019-06-23T16:10:52.927 回答
0

如果您仍然无法将模型默认值定义为 new Date(),因为这会给您带来很长的时间。请参阅下面的示例代码。然后,当您使用 Java/Kotlin 或任何语言时,您始终可以更新长值 | 这将允许您在需要时跳过格式化日期。

 var UserSchema = new Schema({
username: {
    type: String,
    unique: true
},
email: {
    type: String,
    required: true,
    unique: true
},
code: {
    type: String,
    default: ''
},
profileUrl: {
    type: String,
    default: ''
},
firstName: {
    type: String,
    default: ''
},
lastName: {
    type: String,
    default: ''
},
coordinates: {
    type: String,
    default: '0.0,0.0'
},
location: {
    type: String,
    default: ''
},
country: {
    type: String,
    default: 'Tanzania, United Republic of'
},
phoneNumber: {
    type: String,
    default: ''
},
deviceToken: {
    type: String,
    default: ''
},
firebaseUserId: {
    type: String,
    default: ''
},
created: {
    type: Date,
    default: new Date()
},
region: {
    type: String,
    default: 'Dar es salaam'
},
role: {
    type: String,
    default: 'normal'
},
lastActiveDate: {
    type: Date,
    default: new Date()
}

});

于 2020-07-22T02:13:15.960 回答