查询 Azure Table 存储中的非分区和非行键

Querying non-partition and non-row key in the Azure Table Storage

我的 table 结构有一个分区键、行键和一个包含 JSON 数据的列。我想根据分区键和 JSON 数据中的特定值查询 table。

样本JSON数据:

{"ConsumerId":"7","value01":"850.58"}

我创建的查询是

var query = new TableQuery<CloudModelDetail>().Where(TableQuery.CombineFilters(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, retailerReferenceId),
            TableOperators.And, TableQuery.GenerateFilterCondition("CloudModelJsonData","Contains", consumerId)));

但它没有给我想要的结果。任何人都可以帮助我进行正确的查询吗?

不幸的是,

Table 存储不支持像 Contains 这样的通配符匹配。 (参见 https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/query-operators-supported-for-the-table-service

您可以考虑使用 CompareTo,它的作用类似于 StartsWith,作为不等式匹配器 - 但这仅在您的 JSON 数据始终以 [=13= 开头时才有效]

更好 - 添加 ConsumerId 作为附加字段,或重新考虑分区和行键结构以使用包含消费者 ID 的复合键,这也有助于提高性能。