【问题标题】:Convert MongoDB character as R Date将 MongoDB 字符转换为 R 日期
【发布时间】:2016-11-24 13:19:58
【问题描述】:

我尝试将 MongoDB 日期转换为 R 日期对象。我用

library(RMongo)
library(data.table)

mongo<-mongoDbConnect("test", host = "127.0.0.1", port = "27017")
event<-dbGetQuery(mongo, "event", "", 0, 1000)
data<-as.data.table(event)

date

[1] "Fri Oct 28 13:15:00 CEST 2016" "Fri Oct 28 16:00:00 CEST 2016" "Fri Nov 04 18:30:00 CET 2016"  "Fri Nov 04 18:45:00 CET 2016" 

我无法转换此向量。我尝试了以下代码:

as.Date(date, format = "%a %b %d %H:%M:%S %Y")
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

strptime(date, format = "%a %b %d %H:%M:%S %Y")
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

我也尝试使用

修改格式
s.POSIXct(date, "%a %b %d %H:%M:%S %Z %Y")
Error in as.POSIXct.default(date, "%a %b %d %H:%M:%S %Z %Y")

有人可以解释一下我是如何做到这一点的,并解释我做错了什么..

在此先感谢

【问题讨论】:

  • 您在 mongodb 中有一个存储日期的字段,现在您想读取并将其转换为 R 日期。我说的对吗?
  • 没错,这个字段就是mongodb中的iso date。
  • ok 几个示例供您参考 1. # mongo.bson.from.list 自动将 R 原始数据类型(整数、数字、逻辑、字符)转换为 MongoDB 数据类型。 # 你必须为日期类型做一些额外的工作。 # 要使用 ISODate 数据构建 bson,您应该将其作为 POSIXct 对象传递: date_string
  • 2. d
  • 感谢您的帮助。我正在尝试理解您的示例,以便将它们应用到我的上下文中。可以肯定的是,我在 mongo 数据库上是只读的,我查询数据库以提取 data.table 事件,其中包含格式为“Fri Oct 28 13:15:00 CEST 2016”的某个日期的变量。我尝试在 R 中转换 POSIxct 中的日期,但出现错误(返回 NA)。然后,如果我理解您的示例,我需要将查询修改为 mongoDB 以转换 Date ?

标签: r mongodb rmongo


【解决方案1】:

我遇到了同样的问题,我找到了 2 个可能的解决方案:

  1. 您可以使用库 mongolite 而不是 RMongo,它以“2016-01-01 01:00:00”的格式为您提供日期。您只需格式化它们,例如调用 format(yourTime, "%Y-%m-%d %H:%M:%OS3") 来恢复毫秒。
  2. 使用这两个库,您可以使用聚合框架,并在项目阶段将您的日期转换为字符串,例如:"$dateToString": { "format": "%Y-%m-%d %H:%M:%S.%L", "date": "$yourTime" },然后像之前的情况一样再次格式化。

希望对你有帮助。

再见

【讨论】:

    猜你喜欢
    • 2018-09-21
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2022-06-30
    相关资源
    最近更新 更多