代码之家  ›  专栏  ›  技术社区  ›  Pradeep

从cosmos数据库按时间获取最新记录时出现问题

  •  6
  • Pradeep  · 技术社区  · 8 年前

    这是我为从cosmos数据库获取最新记录而编写的代码。

            public static async Task<IEnumerable<IoTHubDataPoint>> GetItemsAsync()
        {
            IDocumentQuery<IoTHubDataPoint> query = client.CreateDocumentQuery<IoTHubDataPoint>(
                UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId),               
                new FeedOptions { MaxItemCount = 1, EnableCrossPartitionQuery = true}).OrderByDescending(x=>x.Time).Take(1)
                .AsDocumentQuery();
    
            List<IoTHubDataPoint> results = new List<ServiceMaxIoTHubDataPoint>();
            while (query.HasMoreResults)
            {
                results.AddRange(await Task.Run(async () => await query.ExecuteNextAsync<IoTHubDataPoint>()) );
            }
            //return results.OrderByDescending(x => x.Time).Take(1).ToArray();
            return results;
    
        }
    

    {
    "DeviceID": "IoT-1",
    "Time": "2017-11-02T14:46:06.7846161",
    "Temperature": 28.63403,
    "Pressure": "95089.47",
    "Altitude": "532.5873",
    "LightStatus": "Too Bright",
    "LightCDSValue": "193",
    "LightCDSVoltageValue": "0.943304",
    "EventProcessedUtcTime": "2017-11-02T14:46:40.3930989Z",
    "PartitionId": 0,
    "EventEnqueuedUtcTime": "2017-11-02T14:46:07.6Z",
    "IoTHub": {
        "MessageId": null,
        "CorrelationId": null,
        "ConnectionDeviceId": "IoT-1",
        "ConnectionDeviceGenerationId": "636449561753440920",
        "EnqueuedTime": "2017-11-02T14:46:07.826Z",
        "StreamId": null
    },
    "id": "XXXXXXXXXXXXXX",
    "_rid": "XXXXXXXXXXXXXx",
    "_self": "dbs/4RM3AA==/colls/4RM3AOJ1XQA=/docs/XXXXXXXXXXXx==/",
    "_etag": "\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXx\"",
    "_attachments": "attachments/",
    "_ts": XXXXXX
    }
    

    谁能告诉我如何解决上述问题?

    1 回复  |  直到 8 年前
        1
  •  5
  •   Robert Green MBA    7 年前

    以下是您可以在Azure中执行的查询 SELECT top 1 * FROM c order by c._ts desc