我谦卑地来到这里寻求帮助,因为我对Cassandra建模及其影响的某些方面感到困惑。
我理解的是,理想情况下,我们应该为每个要过滤的列创建一个表。(我遇到了一些二级索引未更新的问题。)
那么让我们举个例子:
class Pet(Model):
pet_id = columns.UUID(partition_key=True, default=uuid.uuid4)
name = columns.Text()
age = colmuns.Text()
class PetByName(Model):
pet_id = columns.UUID(default=uuid.uuid4)
name = columns.Text(partition_key=True)
age = colmuns.Text()
class PetByAge(Model):
pet_id = columns.UUID(default=uuid.uuid4)
name = columns.Text()
age = colmuns.Text(partition_key=True)
如果我只想查询一个属性,查询语句就非常简单:
PetByName.filter(name="kitty")
所以我的第一个问题是:如果我们想要查询名为“kitty”且年龄为“25岁”的宠物,我们该怎么做呢?
目前,我有一个相当繁琐的实现方式,我进行两个查询,然后循环遍历结果,在
pet_id
属性上执行手动交集。但在我的脑海中,应该有一种批量查询的实现/类型,可以同时运行这两个查询,然后根据像
intersect
这样的运算符合并结果集。欢迎任何帮助、意见或建议。
谢谢阅读,祝您有美好的一天!