Как исправить: SQL API Azure Cosmos DB не работает - PullRequest
0 голосов
/ 25 июня 2019

В настоящее время я занимаюсь миграцией с экземпляра MongoDB на экземпляр Azure Cosmos DB. Из-за этого я выкидываю зависимость mongo-java-driver и заменяю ее последней зависимостью azure-documentdb (версия 2.4.0).

У меня есть коллекция trips в моей базе данных foobar Azure Cosmos со следующей структурой документа:

{
    "_id" : ObjectId("5d0cdd6a6b1bb358985eb5d5"),
    "od" : 1561075200000,
    "rid" : "d001",
    "tnr" : 1007,
    "rsn" : 0,
    "p" : [
        {
            "s" : 1,
            "st" : "P",
            "sid" : "18003100",
        },
        {...}
    ]
}

Первое, что я попробовал для этого проекта миграции, - это запрос моей коллекции поездок с помощью простого оператора where, который по кодам почти такой же, как в примере, найденном здесь: https://github.com/Azure/azure-documentdb-java/

Проблема заключается в следующем. Когда я пытаюсь запросить коллекцию поездок для документов, где rid равен d001, он возвращает нулевые результаты с помощью следующего кода. Этого не должно быть, так как в моей коллекции поездок у меня 9 соответствующих документов.

DocumentClient client = new DocumentClient(
    HOST, 
    MASTER_KEY, 
    ConnectionPolicy.GetDefault(), 
    ConsistencyLevel.Session);

FeedOptions feedOptions = new FeedOptions();
FeedResponse<Document> query = client.queryDocuments(
    "dbs/foobar/colls/trips", 
    "SELECT * FROM trips t WHERE t.rid='d001'", 
    feedOptions);

List<Document> results = query.getQueryIterable().toList();
System.out.println(results.size());

Также изменение запроса на "SELECT t.rid FROM trips t" возвращает ноль результатов. Также изменение запроса на "SELECT * FROM trips t WHERE t['rid']='d001'" возвращает ноль результатов.

Когда я изменяю запрос на "SELECT * FROM trips t", все выглядит просто отлично, и он возвращает все документы в коллекции.

В чем здесь проблема?

1 Ответ

0 голосов
/ 25 июня 2019

Попробуйте выполнить следующий запрос,

FeedResponse<Document> query = client.queryDocuments(
    "dbs/foobar/colls/trips", 
    "SELECT * FROM trips t WHERE t.rid='d001'", 
    null).toBlocking().first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...