【问题标题】:How to insert Date to ArangoDB?如何将日期插入 ArangoDB?
【发布时间】:2015-08-16 09:54:20
【问题描述】:

我不明白 ArangoDB 使用什么格式进行日期存储。 尝试以这种格式插入日期: {"name": "vasia", "date": date("2013-01-15")}

std.json.JSONException@C:\vibe-d-0.7.24\source\vibe\data\json.d(1116): (1): Error: Expected valid JSON token, got 'date("2013-0'.

看起来振动的 JSON 模块在这个字符串上失败了,但是使用 Arango 的格式是什么?

{"name":"vasia","date":"2013-01-15"} 格式的字符串成功插入 DB,但我不明白它是作为文本插入还是作为 Date 对象插入?

【问题讨论】:

    标签: json date d arangodb vibed


    【解决方案1】:

    它是作为文本插入还是作为 日期对象?

    作为文本,因为ArangoDB only supports JSON data types。 JSON 没有 Date 类型,因此日期通常编码为字符串。具体如何操作取决于您,但由于您使用的是 D,我建议您使用 Date.toISOExtString。有关其他一些选项,请参阅this question

    【讨论】:

      【解决方案2】:

      我没有使用过 ArangoDB,但 ArangoDB date documentation 建议您使用 DATE_TIMESTAMP("2013-01-15T14:19:09.522") 和/或 DATE_ISO8601("2013-01-15T14:19:09.522Z") 之类的东西。希望这会有所帮助。

      【讨论】:

      • 这两个函数都是 AQL 函数,并不需要插入日期。他们可以将 ISO 日期字符串或数字解析为 Zulu 时间的 ISO 日期字符串,或者解析为自 01.01.1970 以来经过的毫秒数(整数)。他们还有一个辅助签名来创建这样的日期:DATE_ISO8601(2015, 08, 16, 22, 16, 35, 234),请参阅AQL Date Functions。要存储日期,您可以使用 AQL 执行 INSERT {date: "2015-08-16T20-16-35Z"} INTO collection,使用 arangosh 等执行 db.collection.save({date: "2015-08-16T20-16-35Z"});
      • 任何 ISO 8601 字符串都可以,例如new Date().toISOString()Date.now() 在 JavaScript 中。 ArangoDB 实际上不会拒绝无效的日期,因为它只是一个字符串,并且没有从 DB 端强制执行格式。但是,您应该插入一致的日期,否则以后处理时会遇到麻烦。您可能希望以 Zulu 时间存储所有日期以保持一致性和可排序性(请记住,它只是一个正在排序的字符串)。如果客户端提供2015-08-16T22:20:00+02:00(GMT+2 时区),只需将其传递给DATE_ISO8601(...) 以转换为 UTC+0(它也会对其进行验证)。
      • @CoDEmanX 你的意思是这样的:Json str = parseJsonString(`{"name": "vasia", "date": "DATE_TIMESTAMP("2013-01-15T14:19:09.522")"}`);?然后使用 HTTP API 传递这个 JSON 对象(我正在使用它)
      • 不,AQL 不属于 JSON 附近的任何地方。只需发布像{"name": "vasia", "date": "2013-01-15T14:19:09.522Z"} 这样的有效负载。确保生成日期字符串的客户端使用 UTC 世界时间(注意尾随的 Z)。如果应该使用服务器时间,请执行使用 DATE_NOW() 的 AQL 查询。
      • 没有,没有日期。 ArangoDB 是一个 JSON 文档存储。但是,您可以使用 ISO8601 字符串。基于字符串的排序将返回与按日期排序日期对象相同的顺序:github.com/arangodb/arangodb/issues/1400
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 2023-03-28
      • 2021-01-07
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多