database - Azure 表存储查询基于可能并非所有记录都存在的属性的记录

标签 database azure azure-storage

我正在使用 Azure 表存储作为我的服务,并尝试为其引入软删除功能。我将向标记为删除的条目添加属性 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 属性存在但为 false 的记录?

我曾考虑过清理数据库并将 IsMarkedForDeletion 添加到所有记录中,或者在执行查询后自己过滤结果,但我想在查询本身中执行此操作,以便在创建时对我来说很容易分段请求并对结果进行分页。

最佳答案

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

关于database - Azure 表存储查询基于可能并非所有记录都存在的属性的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31885466/

相关文章:

database - 追踪设计 - 屏幕到数据库的可追溯性

mysql - 在 MySQL 中加速跨多个字段的 LIKE %foo% 搜索的方法

azure - 如何在Azure功能应用程序中添加授权以阻止未经授权的访问

azure - 无法使用 PowerShell POST Cosmos DB 存储过程

Azure队列: find whether item is in queue

azure - 将大量数据从本地移动到 Azure Blob 存储的最佳方法是什么

mysql - 选出运动项目最少的5个运动项目

mysql - SQL 查询 : list of all maximal reservers

azure - Azure 中的扩展事件 - 无法将对象添加到事件 session

azure - 为什么Azure存储帐户有两个 key ?