2013-12-12 5 views
5

Wir suchen der Lage sein, so etwas wie zu tun ..In Cassandra CQL gibt es eine Möglichkeit, die Größe eines Sammlungsspaltentyps abzufragen?

select * from User where rewards.size > 0 

wenn das Schema ist

create table user (
    id uuid primary key, 
    network_id uuid, 
    rewards set<uuid>, 
    name text 
); 
+0

Versuchen Sie es. Wählen Sie * aus Benutzer where count (Belohnungen)> '0'; –

+1

Dies scheint die Zeilenanzahl und nur gültig in einer Auswahl, nicht in einem wo. – mmlac

Antwort

3

leider Cassandra liest sehr schnell eifrig arbeitet und auf der anderen Seite ist nicht perfekt gemacht Unterstützung Kollektionen: Get count of elements in Set type column in Cassandra

leider sind die Sammlungen-Unterstützung auch in CQL Treiber v2 ist nicht 012.351.Perfekt: Sie können Elemente in Upsert-Anweisungen hinzufügen oder löschen. Aber mehr auf ihnen, wie ein Element zu tun, wählen Sie, fragen nach TTLs oder des Sammlungselements nach der Größe der Sammlung fragen, wird nicht unterstützt. So haben Sie zu

resultset: SELECT collection_column FROM ... und dann Artikel nehmen von resultset.one() oder resultset.all() und item.size() sich selbst erhalten.

Was Sie tun möchten, ist das Hinzufügen einer indizierten Spalte mit einem Zähler zum Zählen und Lesen der Elementzahl. Wenn Sie nur wissen möchten, ob die Sammlung nicht leer ist, benötigen Sie möglicherweise eine Indexspalte mit einem booleschen Wert. Der Index stellt sicher, dass Sie die Spalten effizient scannen können.

Verwandte Themen