使用Stargate Document API查询Cassandra数组内容失败如何解决
Stargate Document API 数组查询问题解答
结论
Stargate Document API 支持数组内容搜索,你查询无结果是因为使用了错误的语法格式。
错误原因
你当前使用的alpha.[*]写法不符合Stargate的查询规范:
- 对于存储基础类型(字符串、数字等)的数组,做任意元素匹配时不需要加
[*]通配符 - 即使是嵌套对象的数组查询,
[*]前也不需要额外加.分隔符
正确查询写法
直接对alpha字段使用$eq运算符即可,接口会自动匹配所有alpha数组中包含xyz元素的文档:
where={"alpha":{"$eq":"xyz"}}
扩展用法
- 若需要匹配数组完全等于指定数组的场景(要求元素内容、顺序完全一致),可传入数组作为匹配值:
where={"alpha":{"$eq":["xyz", "efgh"]}} - 若需要查询数组中嵌套对象的字段,比如查找
new数组内存在name等于nam1的文档,语法如下:where={"new[*].name":{"$eq":"nam1"}}
注意:上述数组匹配查询默认会触发全表扫描,数据量较大时建议提前为对应字段创建索引,保证查询性能。
内容的提问来源于stack exchange,提问作者Debdeep Das
相关产品推荐
相关产品推荐

