我目前正在参与从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/