Azure CosmosDB:日期时间(时间戳)问题

时间:2019-11-11 12:57:57

标签: c# azure-cosmosdb

我跟随this页以找到一种更好的基于时间戳的查询方式

我使用Cosmonaut库,这是cosmos DB设置

October 18th 2019

然后我尝试根据以下日期时间进行查询

var cosmosSettings = new CosmosStoreSettings(cosmosDbName, endpointUrl, key, settings: setting =>
        {
            setting.IndexingPolicy = new IndexingPolicy(
                new RangeIndex(DataType.String, precision: -1), 
                new RangeIndex(DataType.Number, precision: -1));
        });

这是我保存在CosmosDb中的内容

    public async Task<IEnumerable<collectionNameObject>> GetAsync(GetCollection query)
    {
        var result = await _objectStore
            .Query(new FeedOptions {PartitionKey = new PartitionKey(query.x)})
            .Where(r =>
                r.y == query.y
                && r.z == query.z
                && r.Timestamp.Date >= query.Date.Date)
            .ToListAsync();
        return result;
    }

问题在于查询结果始终为空,但是,如果删除时间戳过滤器,则可以得到预期的结果。目前尚不清楚我错过了什么,所以我想知道是否有人有更好的建议或提示?

1 个答案:

答案 0 :(得分:0)

我想因为您将其存储为字符串,所以在将其查询为DateTime时不会反映出来。最简单的方法是实现用于处理JSON的自定义序列化器和反序列化器。

[JsonConverter(typeof(EpochDateTimeConverter))]
public DateTime Timestamp { get; set; }

我建议您完成工作with Dates in Azure Cosmos DB并完成 Example