我们可以将N1QL转换为shEL查询以供Spring使用

问题描述 投票:1回答:1

我正在使用spring和couchbase,现在想借助我的spring API将数据上传到couchbase,但是我知道spring不支持N1QL,那么有没有其他方法可以实现或者shEL查询

insert into bucket1(key,value)
values("Aman--12/04/1995",
{
  "English":[{ "midterm": 34, "endterm": 67 }],
  "Maths":[{ "midterm": 20, "endterm": 40 }],
  "Computer":[{ "midterm": 48, "endterm": 90 }]
})

UPDATE bucketName USE KEYS id 
SET arrayname = ARRAY_PUT(IFNULL(Arrayname[]),{"Sports": "89"})
spring-data-jpa couchbase spring-data-couchbase
1个回答
1
投票

如果您无法通过spEL执行某些操作,则可以始终使用纯n1ql:

    @Override
public void updateAreaName(String areaName, String areaId) {

    String queryString = "UPDATE "+getBucketName()+" set areaName = '"+areaName+"' WHERE "+getClassFilter()+" " +
            " and areaId = '"+areaId+"' RETURNING meta().id";

    N1qlParams params = N1qlParams.build().consistency(ScanConsistency.REQUEST_PLUS).adhoc(true);
    ParameterizedN1qlQuery query = N1qlQuery.parameterized(queryString, JsonObject.create(), params);
    resourceRepository.getCouchbaseOperations().getCouchbaseBucket().query(query);

}

private String getBucketName() {
    return resourceRepository.getCouchbaseOperations().getCouchbaseBucket().bucketManager().info().name();
}

private String getClassFilter(){
    return "_class = '" + QResource.class.getName() + "' ";
}
© www.soinside.com 2019 - 2024. All rights reserved.