java - 如何修复:Azure Cosmos DB SQL API似乎不起作用

标签 java azure azure-cosmosdb

我目前正在参与从MongoDB实例到Azure Cosmos数据库实例的迁移。因此,我扔掉了mongo-java-driver依赖项,并将其替换为最新的azure-documentdb(版本2.4.0)依赖项。

我的trips Azure Cosmos数据库中有一个foobar集合,具有以下文档结构:

{
    "_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/

问题如下。当我尝试在Trips集合中查询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"时,一切似乎都很好,它返回了集合中的所有文档。

这可能是什么问题?

最佳答案

尝试以下查询,

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

关于java - 如何修复:Azure Cosmos DB SQL API似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56751839/

相关文章:

java - 为什么我不能使用 Scanner(System.in) 读取整行和 double?

java - ProblemFact 中具有 InverseRelationShadowVariable 的 PlanningEntity 字段未更新 - Optaplanner

visual-studio - 在 Visual Studio (Windows Azure StorageClient) 中添加引用时遇到困难

azure - 我的 Azure ML api 其余部分返回一个空对象

azure-cosmosdb - Cosmos DB 应用按字段排序会删除所有没有该字段的文档

python - CosmosDB Python获取多个项目

azure - 将数据从 Cosmos 数据库帐户导出到另一个帐户的最佳方法

java - Spring websocket STOMP 取消订阅 eventHandler

java - 在 JavaFX 中创建行索引列

Azure DevOps 多个组织或多个项目