от
У нас есть требование фильтровать объекты базы данных Azure Cosmos, используя поле datetime. Структура объекта выглядит следующим образом.
{
    "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

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

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

var queryable = client.CreateDocumentQuery(
        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 Ответы

0 голосов
от
Чтобы выполнить эффективные запросы диапазона для числового поля в Cosmosdb, вы должны определить индекс диапазона для пути, содержащего ваше числовое поле, при создании контейнера. CosmosDB не поддерживает запросы
DateTime
. Вы можете заглянуть в блог здесь, чтобы понять
more
    
0 голосов
от
Вы можете проверить это -DateTime, Epoch и DocumentDb. Вы должны сохранить receiveDatetime в формате даты / времени ISO-8601     
...