如何使用Python 3更新Couchbase中文档的到期时间?

问题描述 投票:0回答:2

我们在Couchbase中有很多文档,其到期时间= 0,这意味着文档将永远保留在Couchbase中。我知道N1QL不支持INSERT / UPDATE / DELETE。

我们有500,000,000个这样的文档,我想使用块/批量同时进行。

[请告知我如何使用Python 3更新到期字段。

python-3.x couchbase n1ql
2个回答
0
投票

您可以使用Couchbase Python(Any)SDK Bucket.touch()方法在此处https://docs.couchbase.com/python-sdk/current/document-operations.html#modifying-expiraton中描述>

如果您不知道文档密钥,则可以使用N1QL Covered索引在python SDK中异步获取文档密钥,并使用python SDK中的上述bucket touch API设置过期。

CREATE INDEX ix1 ON  bucket(META().id) WHERE META().expiration = 0;
SELECT RAW META().id 
FROM bucket WHERE META().expiration = 0 AND META().id LIKE "a%";

您可以为不同的范围发出不同的SELECT,并且可以并行执行。

更新操作,您需要写一个。当您获得每个键时(而不是更新时)执行bucket.touch(),该操作只会更新文档过期,而不会修改实际文档。这样可以节省整个文档(https://docs.couchbase.com/python-sdk/current/core-operations.html#setting-document-expiration)的获取/输出。


0
投票

我刚刚尝试过:`

© www.soinside.com 2019 - 2024. All rights reserved.