Redisgraph可以返回数字和布尔值而不是它们的字符串表示吗?

ncgqoxb0  于 2022-10-08  发布在  Redis
关注(0)|答案(2)|浏览(300)

我在和Redisgraph合作。

我有一个节点Person,它有三个属性:name(字符串)、age(Number)和isAlive(Boolean)。

如果我将年龄存储为数字,不带引号,它将正确地将其存储为数字。因此,如果我询问:

MATCH (p:Person) RETURN p

我所拥有的是:

{ name: 'John', age: 30, isAlive: 'true' }

但有办法查询并得到真正的布尔值吗?

我想要的是:

{ name: 'John', age: 30, isAlive: true }

谢谢!

laximzn5

laximzn51#

听起来像是在使用redis-cli查询RedisGraph。处理模块回复的Resp协议只允许字符串和整数作为可以传递的原始数据类型,因此您的请求不能通过redis-cli完成。

但是,所有客户端库都会将回复解码为正确的类型。我建议使用一个作为与RedisGraph-https://oss.redis.com/redisgraph/clients/交互的中介。

6rqinv9w

6rqinv9w2#

重分析器可以返回紧凑的格式,其中包括值的类型。为了使用它,您需要传递--compact标志(该标志也适用于redis-cli):

GRAPH.QUERY demo "MATCH (a) RETURN a" --compact

一些客户端库利用这种紧凑格式来返回正确的类型。值的类型以整数形式返回:

typedef enum {
    PROPERTY_UNKNOWN = 0,
    PROPERTY_NULL = 1,
    PROPERTY_STRING = 2,
    PROPERTY_INTEGER = 3,
    PROPERTY_BOOLEAN = 4,
    PROPERTY_DOUBLE = 5,
} PropertyTypeUser;

您可以阅读有关紧凑格式here的更多信息。

相关问题