【问题标题】:How to POST / PUT edge with number property?如何使用数字属性发布/放置边缘?
【发布时间】:2015-03-12 03:45:59
【问题描述】:

我正在使用 Rexster 将数据加载到 TitanDB。发布/放置顶点时,我可以在请求正文中提供 JSON 形式的属性。如果一个属性的值是一个数字,它将相应地存储为一个数字,并且可以这样检索。例如,以下正文将在 post 消息中创建一个 number 类型的属性“score”:

{
  "score": 5
}

不过,当 POST / PUTing 边缘时,似乎属性只能作为查询参数提供,例如:

POST .../graphs/graph/edges?_outV=256&_label=review&_inV=512&score=5

不幸的是,在这种情况下,5 总是被视为一个字符串:“5”。因此,包括数字运算/比较在内的查询不起作用。例如,以下查询仍将返回发布的边(尽管发布的分数为 5):

v(256).outE('review').filter{it.getProperty('score')>9}

有没有办法 POST / PUT 边缘及其属性以便考虑数字类型?

【问题讨论】:

    标签: titan rexster


    【解决方案1】:

    我有理由确定您可以将 JSON 发布到边缘路由,但即使您不能,您也可以使用 Rexster 的显式类型系统来正确发布您的整数:

    $ curl -X POST "http://localhost:8182/graphs/tinkergraph/edges?_outV=1&_inV=2&_label=knows&score=(i,5)"
    
    {
      "version":"2.7.0-SNAPSHOT",
      "results": {
        "score":5,"_id":"0","_type":"edge","_outV":"1","_inV":"2","_label":"knows"
      },
      "queryTime":31.79554
    }
    

    【讨论】:

    • 我尝试在正文中发送 JSON,但没有成功。但是,正如您所提议的,显式类型系统可以按预期工作!现在,概述的查询将不会产生大于 5 的值的结果。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多