我正在执行下一个查询,以确定数据库中是否存在文档。如果存在,我可以返回true,但是如果文档在数据库中尚不存在。
下一个问题:
Unable to execute query due to the following n1ql errors:
{"msg":"No index available on keyspace kids_club that matches your query. Use CREATE INDEX or CREATE PRIMARY INDEX to create an index, or check that your expected index is online.","code":4000}
这是我的代码,我不想获取其他字段而不是id,因为我只想标识文档是否存在:
/**
* Get the ShipRoom document if exists.
* @return Optional-ShipRoom if exist, Optional.empty() otherwise.
*/
@Query("SELECT META(sp).id AS _ID, META(sp).cas AS _CAS"
+ " FROM #{#n1ql.bucket} as sp"
+ " WHERE #{#n1ql.filter}")
Optional<ShipRoom> findShipRoomDocument();
有什么建议吗?
答案 0 :(得分:1)
该错误消息表示您没有该查询可以使用的索引。尝试在查询工作台中运行该查询,您将得到相同的错误。您需要CREATE INDEX
(我不知道您的WHERE语句是什么样的,所以我不推荐您使用索引)。
但是,如果您有文档ID,则无需使用N1QL查询来查看它是否存在。您可以调用Exists() method on the Couchbase Java SDK,它会更快地工作,因为它不会产生查询/索引服务的开销。