【问题标题】:Azure's CosmosDB - Deleting all documents in a date rangeAzure Cosmos DB - 删除日期范围内的所有文档
【发布时间】:2017-08-22 21:18:56
【问题描述】:

我想删除在 2017 年 8 月 18 日和 2017 年 8 月 22 日之间创建的所有文档。有人告诉我,所有文档在“_ts”字段下都有 CosmosDB 自己的时间戳。我尝试使用文档资源管理器使用此查询c._ts > "2017-08-18" 过滤文档,但它不返回任何文档。我还尝试了不带引号的c._ts > 2017-08-18,但它会返回所有文档,甚至是该日期之前的文档,就好像根本没有查询一样。查看文档,我什至没有看到“_ts”字段。有什么办法可以删除这些文件吗? 谢谢。

【问题讨论】:

    标签: date azure azure-cosmosdb nosql


    【解决方案1】:

    _ts 是 Azure Cosmos DB 的内部时间戳属性

    _ts 字段是一个 unix 风格的纪元时间戳,表示日期和时间。每次修改文档时都会更新 _ts 字段。

    如果你想在一个日期范围内查询,我们可以通过udf函数轻松完成,更多细节请参考另一个SO thread

    SELECT * FROM c where udf.udfname(c._ts)>'2017-08-18'
    

    udf 函数

    function epochToDate (ts) { 
       return new Date(ts*1000);
    }
    

    【讨论】:

      【解决方案2】:

      根据 https://msdn.microsoft.com/en-us/library/azure/microsoft.azure.documents.resource.timestamp.aspx#P:Microsoft.Azure.Documents.Resource.Timestamp

      _ts 从 Azure DocumentDB 数据库服务获取与资源关联的最后修改时间戳。

      [JsonPropertyAttribute(PropertyName = "_ts")] [JsonConverterAttribute(typeof(UnixDateTimeConverter))] public virtual DateTime Timestamp { get; internal set; }

      它表示为 POSIX 或纪元时间值。它是自 1970 年 1 月 1 日 00:00:00 (UTC) 以来经过的秒数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多