2017-03-08 89 views
0

我的表结构具有分区键,行键和包含JSON数据的列。我想根据分区键和JSON数据中的特定值来查询表。查询Azure表存储中的非分区和非行键

样品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))); 

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

+1

如果您已经在使用json对象,则可能需要考虑文档数据库。我相信它应该有可能通过json属性在文档db中查询。 –

回答

2

不幸的是,表存储不支持通配符匹配,如Contains。 (见https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/query-operators-supported-for-the-table-service

您可以考虑使用CompareTo,它可以像StartsWith,作为一个不等式匹配 - 而这一点,如果你的JSON数据总是与{"ConsumerId":"value",

更好的开始只会工作,但 - 添加ConsumerId作为附加字段,或重新考虑分区和行键结构以利用包含消费者ID的组合键,这也应该有助于提高性能。