java - 带有子文档的 Azure cosmos Db Criteria 查询 - java spring boot
问题描述
我是 azure cosmos db 的新手。我正在尝试从我的 Spring Boot 应用程序中的容器中读取项目。我正在使用带有标准的 cosmos 模板。假设我有这样的文件
{
"stop_id": 70021,
"stop_name": "CALTRAIN - 22ND ST STATION",
"stop_lat": 37.757692,
"stop_lon": -122.392318,
"zone_id": 3329,
"trip": [{
"trip_id": "RTD8997283",
"arrival_time": "05:40:00",
"departure_time": "05:40:00",
"stop_id": 70021,
"stop_sequence": 1
}, {
"trip_id": "RTD8997283",
"arrival_time": "05:52:00",
"departure_time": "05:52:00",
"stop_id": 70021,
"stop_sequence": 2
}]
}
如果我想根据停止 id 获取,我可以像这样添加停止 id 的条件
Criteria criteria = Criteria.getInstance(CriteriaType.IS_EQUAL, "stop_id", Collections.singletonList("70021"), Part.IgnoreCaseType.ALWAYS);
CosmosQuery cosmosQuery = new CosmosQuery(criteria).with(Sort.unsorted());
Iterable<StopInfo> items = cosmosTemplate.find(cosmosQuery, StopInfo.class, "myContainer");
但是,如果我想为旅行 ID 添加条件,我该怎么做?
解决方案
这样,您可以使用条件从 cosmos 中的数组中搜索
Map map = new HashMap();
map.put("trip_id","RTD8997283");
Criteria criteria = Criteria.getInstance(CriteriaType.ARRAY_CONTAINS, "trip", Collections.singletonList(map), Part.IgnoreCaseType.ALWAYS);
CosmosQuery cosmosQuery = new CosmosQuery(criteria).with(Sort.unsorted());
Iterable<StopInfo> items = cosmosTemplate.find(cosmosQuery, StopInfo.class, "myContainer");
推荐阅读
- swift - SwiftUI 在惰性网格中选择多个项目
- node.js - 如何将 Protractor 恢复为选定的版本?
- scala - 如何将下表转换为所需的格式?
- php - 使用 .live 电子邮件发送邮件 php
- python - 在 Python 中将列表写入 CSV
- java - 当我单击片段中的标签(标题需要更改为另一个)但使用相同的片段时,如何更改标题标题
- scala - 如何在Scala中迭代Future List的结果?
- debugging - 有没有办法使用 C-Spy 命令行实用程序进行交互式调试?
- javascript - 反应:警告:validateDOMNesting(...):空白文本节点不能作为子节点出现
- sql - 为什么将 ROW_NUMBER 定义为窗口函数?