在cql中的条件使用datastax c驱动程序查询timeuuid数据类型时,如何使“大于”或“小于”?
我在cassandra中有一个表,用于将按时间戳排序的cookie历史记录存储为timeuuid:

CREATE TABLE cookie_history (
    cookie_id text,
    create_date timeuuid,
    item_id text,
    PRIMARY KEY ((cookie_id), create_date)
);

该表使用C类进行映射,以便使用数据税C卡桑德拉驱动程序进行查询:
[Table("cookie_history")]
public class CookieHistoryDataEntry
{
    [PartitionKey(1)]
    [Column("cookie_id")]
    public string CookieID;

    [ClusteringKey(1)]
    [Column("create_date")]
    public Guid CreateDate;

    [Column("item_id")]
    public string ItemID;
}

对于一个给定的cookie,我想要在给定的时间戳之后的所有项。
        var myTimeUuid = new Guid("5812e74d-ba49-11e3-8d27-27303e6a4831");
        var table = session.GetTable<CookieHistoryDataEntry>();
        var query = table.Where(x => x.CookieID == myCookieId
                                  && x.CreateDate > myTimeUuid);

但是这个(x.createDate>myTimeUuid)给了我一个编译时错误:
Operator '>' cannot be applied to operands of type 'System.Guid' and 'System.Guid'

最佳答案

在原始cql中可以在timeuuid上使用“大于”。因此,一种解决方案是从驱动程序执行原始cql:

session.Execute(@"select *
    from cookie_history
    where cookie_id = 1242a96c-4bd4-8505-1bea-803784f80c18
    and create_date > 5812e74d-ba49-11e3-8d27-27303e6a4831;");

08-17 14:52