我用海王星作为我的图形数据库。在
我有一个ID(UUID)、标签和日期的顶点。在
我可以像这样拖动多个顶点的所有属性:
g.V('633378c3-b016-433a-a3ca-c1662982f970').valueMap(True).as_('test1').V('6e5db9a0-2946-4d98-9657-07a3fe825598').valueMap(True).as_('test2').select('test1', 'test2').toList()
[{'test11': {<T.id: 1>: '633378c3-b016-433a-a3ca-c1662982f970', 'Date': [datetime.datetime(2019, 7, 7, 20, 0)], <T.label: 3>: 'sample_id'}, 'test2': {<T.id: 1>: '6e5db9a0-2946-4d98-9657-07a3fe825598', 'Date': [datetime.datetime(2019, 7, 7, 20, 0)], <T.label: 3>: 'sample_id'}}]
但我只想拉最早日期的顶点,如果两个日期相同,我想按字母数字顺序拉较早的顶点。在
如果我尝试
^{pr2}$我得到了一个错误:
gremlin_python.driver.protocol.GremlinServerError: 498: {"requestId":"101ab1d2-ced8-4a20-adc9-5deb97e1e801","code":"UnsupportedOperationException","detailedMessage":"java.util.LinkedHashMap cannot be cast to org.apache.tinkerpop.gremlin.structure.Element"}
您得到错误的原因是因为您试图将
valueMap()
的结果视为一个图Map
,因为by('Date')
语法只对Element
有效。根据您想要做什么的描述,我认为您可以将遍历简化为:我假设“前面一个字母数字顺序”是指UUID,这就是为什么我添加了第二个
by()
调制器和T.id
。在如果要保留这两个顶点以便以后在遍历中使用,则有许多选项。你可以:
^{pr2}$分别用}按位置访问它们。使用相同的方法,您还可以
limit(local,1)
和{project()
将它们转换为Map
:相关问题 更多 >
编程相关推荐