Java 检索couchbase文档| spring中存储的json对象数组
如何检索存储在couchbase文档中的JSON对象数组,并使用Java 检索couchbase文档| spring中存储的json对象数组,java,spring-data,couchbase,spring-data-couchbase,Java,Spring Data,Couchbase,Spring Data Couchbase,如何检索存储在couchbase文档中的JSON对象数组,并使用spring数据将其存储在相应的列表中,比如list 以下是couchbase上名为“项目摘要”的文档内容- [ { "id": "1", "title": "New API", "owner_id": "dsdssdsd445d", "description": "Yh A Testin API", "status": "unactiveAPI
spring数据将其存储在相应的列表中,比如list
以下是couchbase上名为“项目摘要”的文档内容-
[
{
"id": "1",
"title": "New API",
"owner_id": "dsdssdsd445d",
"description": "Yh A Testin API",
"status": "unactiveAPI"
},
{
"id": "2",
"title": "New TW Projec API",
"owner_id": "dsdssdsd445d",
"description": "Testin API",
"status": "unactiveAPI"
},
{
"id": "3",
"title": "Projec API",
"owner_id": "dsdssdsd445d",
"description": "Testin",
"status": "unactiveAPI"
}
]
当我尝试使用以下方法检索它时-
public interface ProjectSummaryRepository extends CrudRepository<List<ProjectSummary>, String>{}
//within main method
Optional<List<ProjectSummary>> summaries = projectSummaryRepo.findById(COUCHBASE_DOCUMENT_ID);
在此场景中不能使用findById。您必须使用SpringData DSL查询您的数据:
public interface ProjectSummaryRepository extends CrudRepository<List<ProjectSummary>, String> {
//using standard Spring Data DSL
List<ProjectSummary> findByTitleAndStatus(String title, String status)
//complex query using N1QL syntax
@Query("#{#n1ql.selectEntity} where #{#n1ql.filter} and status = $1 and ( title = $2 or owner_id = $3)")
List<ProjectSummary> findWithSomeComplexQuery(String status, String title, String owner_id)
}
public interface ProjectSummaryRepository扩展了crudepository{
//使用标准Spring数据DSL
列出FindBytileAndStatus(字符串标题、字符串状态)
//使用N1QL语法的复杂查询
@查询(“#{n1ql.selectEntity}其中#{#n1ql.filter}和状态=$1和(标题=$2或所有者id=$3)”)
列表findWithSomeComplexQuery(字符串状态、字符串标题、字符串所有者\u id)
}
之后,您可以在代码中简单地调用这些方法
List<ProjectSummary> sumaries = projectSummaryRepo.findByTitleAndStatus("someTitle", "someStatus")
List<ProjectSummary> sumaries2 = projectSummaryRepo.findWithSomeComplexQuery("someStatus", "someTitle", "owner123" )
List sumaries=projectSummaryRepo.findbytileandstatus(“someTitle”、“someStatus”)
List sumaries2=projectSummaryRepo.findWithSomeComplexQuery(“someStatus”、“someTitle”、“owner123”)
使用findById无法在此场景中使用。您必须使用SpringData DSL查询您的数据:
public interface ProjectSummaryRepository extends CrudRepository<List<ProjectSummary>, String> {
//using standard Spring Data DSL
List<ProjectSummary> findByTitleAndStatus(String title, String status)
//complex query using N1QL syntax
@Query("#{#n1ql.selectEntity} where #{#n1ql.filter} and status = $1 and ( title = $2 or owner_id = $3)")
List<ProjectSummary> findWithSomeComplexQuery(String status, String title, String owner_id)
}
public interface ProjectSummaryRepository扩展了crudepository{
//使用标准Spring数据DSL
列出FindBytileAndStatus(字符串标题、字符串状态)
//使用N1QL语法的复杂查询
@查询(“#{n1ql.selectEntity}其中#{#n1ql.filter}和状态=$1和(标题=$2或所有者id=$3)”)
列表findWithSomeComplexQuery(字符串状态、字符串标题、字符串所有者\u id)
}
之后,您可以在代码中简单地调用这些方法
List<ProjectSummary> sumaries = projectSummaryRepo.findByTitleAndStatus("someTitle", "someStatus")
List<ProjectSummary> sumaries2 = projectSummaryRepo.findWithSomeComplexQuery("someStatus", "someTitle", "owner123" )
List sumaries=projectSummaryRepo.findbytileandstatus(“someTitle”、“someStatus”)
List sumaries2=projectSummaryRepo.findWithSomeComplexQuery(“someStatus”、“someTitle”、“owner123”)
我尝试使用标准spring dsl(List findById(String id)),但它给了我一条错误消息——“keyspace项目摘要bucket上没有与您的查询匹配的可用索引。请使用创建索引或创建主索引来创建索引,或检查您的预期索引是否联机。”您必须首先为bucket创建至少一个主索引。在couchbase服务器上运行“在您的_BUCKET_NAME上创建主索引”,我尝试使用标准spring dsl(List findById(String id)),但它给了我以下错误消息-“keyspace项目摘要存储桶上没有与您的查询匹配的索引。使用“创建索引”或“创建主索引”创建索引,或检查您的预期索引是否联机。“您必须首先为您的存储桶创建至少一个主索引。在couchbase服务器上运行“在您的存储桶名称上创建主索引”