ExistsQuery也叫NULL查询或者空值查询。一般用于稀疏数据中,用于判断某一行的某一列是否存在,例如查询所有数据中,address列不为空的行。
说明
- 如果需要查询某一列为空,则需要和BoolQuery中的MustNotQueries结合使用。
- 以下情况会认为某一列不存在,以 "city" 列为例说明。
- city列在本行数据中不存在。
- city列是空数组,即 "city" = "[]"。
前提条件
参数
参数 | 说明 |
---|---|
TableName | 数据表名称。 |
IndexName | 多元索引名称。 |
Query | 设置查询类型为ExistsQuery。 |
FieldName | 列名。 |
示例
查询表中city列不为空的行。
func ExitsQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
searchRequest := &tablestore.SearchRequest{}
searchRequest.SetTableName(tableName)
searchRequest.SetIndexName(indexName)
query := &search.ExitsQuery{} //设置查询类型为ExitsQuery。
query.FieldName = "city" //设置列名。
searchQuery := search.NewSearchQuery()
searchQuery.SetQuery(query)
searchQuery.SetGetTotalCount(true)
searchRequest.SetSearchQuery(searchQuery)
//设置为返回所有列。
searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
ReturnAll:true,
})
searchResponse, err := client.Search(searchRequest)
if err != nil {
fmt.Printf("%#v", err)
return
}
fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) //查看返回结果是否完整。
fmt.Println("TotalCount: ", searchResponse.TotalCount) //打印匹配到的总行数,非返回行数。
fmt.Println("RowCount: ", len(searchResponse.Rows))
for _, row := range searchResponse.Rows {
jsonBody, err := json.Marshal(row)
if err != nil {
panic(err)
}
fmt.Println("Row: ", string(jsonBody))
}
}
在文档使用中是否遇到以下问题
更多建议
匿名提交