首页 > 解决方案 > 我们可以将 N1QL 转换为 shEL 查询以供 Spring 使用吗

问题描述

我正在研究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-jpacouchbasespring-data-couchbase

解决方案


如果你不能通过 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() + "' ";
}

推荐阅读