AWS Neptune datetime()

时间:2018-11-05 02:33:58

标签: gremlin tinkerpop amazon-neptune

我正在使用gremlin-javascript与Node的AWS Neptune对话。根据{{​​3}}和docs,应使用datetime()设置日期。

我在datetime()中找不到此gremlin函数的实现。应该从哪里进口?

g.addV("user").property(single, "createdDate", datetime(now().toISOString());

"ReferenceError: datetime is not defined"

2 个答案:

答案 0 :(得分:3)

因此,当将查询作为文本字符串发送到图形时,应使用Neptune提供的'datetime()'方法。这是Gremlin控制台中附加到正在运行的Neptune实例的示例:

gremlin> g.addV('test').property('timestamp',datetime('2018-11-04T00:00:00')).property(id,'t1')
==>v[t1]
gremlin> g.V('t1').valueMap()
==>{timestamp=[Sun Nov 04 00:00:00 UTC 2018]}
gremlin> g.V().has('timestamp',gt(datetime('2018-11-03T00:00:00')))
==>v[t1] 

现在,如果使用的是GLV语言,例如Gremlin Python,则可以使用本机Python datetime类。如下所示。请注意,尽管两个示例都使用名称datetime,但除了名称之外,其他所有示例都完全不同。我从使用Gremlin Python的Jupyter Notebook运行此程序,但它在Python控制台中或作为独立的Python应用程序同样有效。

import datetime
g.addV('test').\
    property(id,'x2').\
    property('timestamp',datetime.datetime.now()).next()

v[x2]

g.V('x2').valueMap(True).next()

{<T.label: 3>: 'test',
 <T.id: 1>: 'x2',
 'timestamp': [datetime.datetime(2018, 11, 5, 15, 3, 52, 29000)]}

请原谅一个Python示例-我知道您正在使用Javascript。我刚好配置了一个Python环境,但是应该应用相同的原理。

正如我和其他人在其他帖子中提到的那样,所有这些都说,我更喜欢使用纪元时间存储时间戳。通常,根据我需要的精度,我使用10或13位的整数表示时间。这也是一种存储时间信息并且使用大于或小于谓词等易于测试的简便方法。

无论如何,我希望这有助于您澄清一些选择。 干杯,开尔文。

答案 1 :(得分:1)

datetime()不是Gremlin的一部分,是海王星的扩展功能。我不知道海王星会发布包含该功能的javascript(或与此相关的任何其他语言)的客户端扩展。当按原样使用Gremlin语言变体时(建议使用嵌入式Gremlin脚本),最好按照此question的答案中的描述存储您的日期。