Как запросить объекты в базе данных Azure Cosmos с полем datetime - PullRequest
0 голосов
/ 04 июля 2019

У нас есть требование фильтровать объекты базы данных Azure Cosmos, используя поле даты и времени.Структура объекта выглядит следующим образом.

{
    "nodeId": 3,
    "nodeName": "HAVC",
    "assetId": 2,
    "assetName": "Chiller_02",
    "assetMeasurementId": 22,
    "assetMeasurementName": "CHL01_WATER_ENTER_TEMP",
    "streamId": 0,
    "streamName": null,
    "deviceId": 4,
    "deviceTagId": 48,
    "rawTelemetryData": 49,
    "observationPropertyId": 1,
    "isActive": false,
    "enqueueDatetime": "2019-05-31T07:17:45",
    "receivedDatetime": "2019-06-03T18:51:16.6684284",
    "id": "1e9fe261-5e73-4a64-8921-817a6c601ea0",
    "_rid": "PfsxALhViWYWAAAAAAAAAA==",
    "_self": "dbs/PfsxAA==/colls/PfsxALhViWY=/docs/PfsxALhViWYWAAAAAAAAAA==/",
    "_etag": "\"0000f80f-0000-1800-0000-5cf51e930000\"",
    "_attachments": "attachments/",
    "_ts": 1559568019
}

В этом нам нужно запросить данные, используя поле «receiveDatetime», и нам нужны данные в диапазоне от '18: 51' до '18: 57 '* 1004.*

В C # мы используем синтаксис, аналогичный LINQ

var queryable = client.CreateDocumentQuery<TestDto>(
        UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId),
        new { EnableCrossPartitionQuery = true })
    .Where(x => x.receivedDatetime >= DateTime.Parse(startDate))
    .Where(x => x.receivedDatetime <= DateTime.Parse(endDate))
    .OrderBy(x => x.receivedDatetime)
    .AsDocumentQuery();

Но мы не смогли получить данные, как ожидалось.Благодарим Вас за помощь

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Чтобы выполнить эффективные запросы диапазона для числового поля в Cosmosdb, вы должны определить индекс диапазона для пути, содержащего ваше числовое поле, при создании контейнера.

CosmosDB не поддерживает запросы DateTime. Вы можете заглянуть в блог здесь, чтобы понять more

1 голос
/ 04 июля 2019

Вы можете проверить это - DateTime, Epoch и DocumentDb Вы должны сохранить receiveDatetime в формате даты / времени ISO-8601

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...