我跟随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;
}
问题在于查询结果始终为空,但是,如果删除时间戳过滤器,则可以得到预期的结果。目前尚不清楚我错过了什么,所以我想知道是否有人有更好的建议或提示?
答案 0 :(得分:0)
我想因为您将其存储为字符串,所以在将其查询为DateTime时不会反映出来。最简单的方法是实现用于处理JSON的自定义序列化器和反序列化器。
[JsonConverter(typeof(EpochDateTimeConverter))]
public DateTime Timestamp { get; set; }
我建议您完成工作with Dates in Azure Cosmos DB并完成 Example