Azure表存储查询基于可能不存在于所有记录的属性的记录

时间:2015-08-07 19:43:30

标签: database azure azure-storage

我正在使用Azure Table Storage进行我的服务,我正在尝试为其引入一个软删除功能。我将向标记为删除的条目添加属性IsMarkedForDeletion。当我查询时,我只需要没有标记为删除的条目。在未删除的字段中,IsMarkedForDeletion甚至不存在。

我尝试了以下内容:

<...query...> and (IsMarkedForDeletion ne true)
<...query...> and (IsMarkedForDeletion eq false)
<...query...> and (not (IsMarkedForDeletion ne false))
<...query...> and (not (IsMarkedForDeletion eq true))

<...query...> and (not (IsMarkedForDeletion eq NULL)) => returns 501 Not Implemented

他们都没有显示其中没有IsMarkedForDeletion属性的条目。

我该怎么办才能获得没有IsMarkedForDeletion的记录以及IsMarkedForDeletion属性存在的记录,但是是否为假?

我考虑过擦洗数据库并将IsMarkedForDeletion添加到所有记录中,或者在执行查询后自己过滤结果,但我想在查询本身中这样做,这样在创建时我很容易分段请求和分页结果。

1 个答案:

答案 0 :(得分:1)

我认为这是不可能的,您可以尝试检查该字段是否等于null,我不知道这是否会解决您的问题。但通常表存储没有架构,并且不打算用于查询分区键和行键以外的字段。我个人认为你可以通过获得给定PK + RK的所有结果并在以后过滤它们来获得更快的结果,而不是将其留给表存储来过滤不在PK + RK对中的字段。