我们在couchbase中有多删除java api吗?

时间:2015-03-04 07:02:36

标签: couchbase

我试图在一次通话中从couchbase中删除多个键。我们在couchbase中有类似bulkGet的删除吗?

1 个答案:

答案 0 :(得分:1)

批量删除是definitely there,但它要求您将要删除的KEY作为参数列表进行删除。因此,可能无法在一次调用中删除所有必需的记录。基本上,你要做的是(refer this link for an example):

  • 查询Couchbase中的数据
  • 迭代结果集
  • 并为您感兴趣的每个密钥删除。

但是,我相信:服务器上的删除应该在服务器上删除,而不是像上面那样需要三个步骤。

在这方面,我认为老式的RDBMS更好你所需要做的就是从数据库中解雇SQL查询,例如"匹配%"'。

幸运的是,CouchBase中有类似于SQL的东西叫做N1QL(发音为nickle)。我不知道JavaScript(和其他语言语法),但这是我在python中做到的。

要使用的查询:从b中删除META(b).id LIKE"%"

layer_name_prefix = cb_layer_key + "|" + "%"
query = ""
try:
    query = N1QLQuery('DELETE from `test-feature` b where META(b).id LIKE $1', layer_name_prefix)
    cb.n1ql_query(query).execute()
except CouchbaseError, e:
    logger.exception(e)

要实现同样的目的:如果您要存储'类型',则备用查询可以如下所示:和/或其他元数据,例如' parent_id'。

DELETE from type =' Feature'和parent_id = 8;

但我更喜欢使用查询的第一个版本,因为它在密钥上运行,我相信Couchbase必须有一些内部索引才能在密钥(和其他元数据)上更快地操作/查询。