【问题标题】:Saving new Date() in MongoDB Collection在 MongoDB 集合中保存新的 Date()
【发布时间】:2021-04-19 14:14:51
【问题描述】:

我尝试将日期存储在 mongodb 集合中:

const date = new Date();
const time = {
  date:  date,
  timestamp:  date.getTime(),
}
Collection.insert(time); // no schema

实际存储的内容:

{ "_id" : "PmMCEANtvfBwNGApH", "date" : "2021-01-14T14:33:36.520Z", "timestamp" : 1610634816 }

我的期望:

{ "_id" : "PmMCEANtvfBwNGApH", "date" : " ISODate("2021-01-14T14:33:36.520Z"), "timestamp" : 1610634816 }

我必须做什么才能实现第二个?

【问题讨论】:

  • 那是你的完整代码吗?它将存储为日期。
  • @ForamSojitra 我试过这个,但后来我在转义双引号内得到了相同的结果
  • @Gibbs 是的,这是完整的代码
  • 你确定吗?因为您有两次相同的字段名称 date 并且您错过了一个花括号 } - 代码根本不应该工作。同样对字段名和变量名使用相同的表达式似乎不是一个聪明的主意。
  • @WernfriedDomscheit 已更正,一个是时间戳而不是日期

标签: javascript mongodb ecmascript-6 meteor-collections


【解决方案1】:

试试这个看看是否有效。

const date = new Date();
const fullDate = date.getFullYear().toString() +'-'+ (date.getMonth() + 1).toString() + '-' + date.getDate().toString();
console.log(new Date(fullDate));

【讨论】:

  • 哇,这段代码在第二行(const fulldate)中给了我一个Exited from signal: SIGSEGV
  • 啊这是因为它在异步调用中
  • 抱歉没能找到你兄弟:/
  • 我将代码移到了主程序中,它正在存储:"date" : "2021-1-14"
  • 这样存储。 const time = { date: new Date(fullDate), timestamp: date.getTime(),
【解决方案2】:

您的代码是正确的,因为如果您将new Date() 用于字段,我运行并显示结果,类型绝对是日期,如下图所示 测试其他东西,也许你的数据库中的类型是正确的,但是当你获取数据时会改变 ,

【讨论】:

  • 您是否在您的收集测试中应用了架构?在带有模式的集合上,我还收到了正确的 ISODate 对象。但就我而言,它是一个无模式集合。
  • 否,您是否使用架构和猫鼬将数据存储在集合中?
  • 您是否使用 IDE 检查您的数据类型?喜欢robo3t
  • 在这种情况下不,因为我想要更有活力。所以集合没有附加架构。
  • 我们有 Robo3t,但在将它连接到服务器时遇到问题。我可以使用 Meteor Mongo shell。
猜你喜欢
  • 2017-08-08
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
  • 2017-02-18
  • 2016-05-07
相关资源
最近更新 更多