【问题标题】:Do we have multi delete java api in couchbase?我们在 couchbase 中有多重删除 java api 吗?
【发布时间】:2015-03-04 07:02:36
【问题描述】:

我正在尝试在一次通话中从 couchbase 中删除多个键。我们在 couchbase 中是否有用于删除的 bulkGet 之类的东西?

【问题讨论】:

标签: couchbase


【解决方案1】:

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

  • 从 Couchbase 查询数据
  • 遍历结果集
  • 并为您感兴趣的每个键触发删除。

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

在这方面,我认为老式的 RDBMS 更好,您需要做的就是触发 SQL 查询,例如“从数据库中删除,例如“match%”。

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

要使用的查询:DELETE from b where 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)

为了达到同样的目的:如果您要存储“类型”和/或其他元数据(如“父 ID”),则备用查询可能如下所示。

DELETE from where type='Feature' and parent_id=8;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-25
    • 2016-01-25
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多