我目前正在参与从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/
问题如下。当我尝试在行程集合中查询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"
时,一切似乎都很好,它返回了集合中的所有文档。
这里可能是什么问题?
答案 0 :(得分:0)
尝试以下查询,
FeedResponse<Document> query = client.queryDocuments(
"dbs/foobar/colls/trips",
"SELECT * FROM trips t WHERE t.rid='d001'",
null).toBlocking().first();