Azure Cosmos DB Graph(Gremlin)保存类日期格式属性值失败问题
解决Azure Cosmos DB Graph API(Gremlin)中日期格式字符串属性的编译错误
你猜的没错!这个问题确实是Azure Cosmos DB的Gremlin解析器自动把你的日期格式字符串错误识别成了Date类型导致的。Cosmos DB的Gremlin实现会对类似YYYY-MM、YYYY-MM-DD这类格式的字符串做自动类型推断,将其判定为Date类型,但目前它的二进制比较函数还不支持Date类型——哪怕你只是想把这个值存成普通字符串属性,也会触发这个编译错误。
这里有两个靠谱的解决方法:
显式强制字符串类型:在设置属性值时,用
String()函数包裹你的日期格式字符串,明确告诉解析器把它当作字符串处理,而不是自动推断为Date类型。修改后的Gremlin语句如下:g.V('id').property('PartReference', String('2016-02'));调整字符串格式避免自动识别:如果不想用
String()函数,也可以修改字符串的格式,打破日期格式的匹配规则,比如把分隔符换成下划线:'2016_02',或者在字符串前后添加额外标识:'DATE_2016-02'。不过这种方法不如显式声明类型可靠,毕竟后续如果有其他类似格式的字符串还是可能触发同样的问题。
这个问题是Cosmos DB Gremlin实现的特定行为,目前官方还没有调整自动类型推断的开关,所以显式指定字符串类型是最直接有效的解决方案。
内容的提问来源于stack exchange,提问作者Jonas Stensved
相关产品推荐
相关产品推荐

