我们在Couchbase中有很多文档,其到期时间= 0,这意味着文档将永远保留在Couchbase中。我知道N1QL不支持INSERT / UPDATE / DELETE。
我们有500,000,000个这样的文档,我想使用块/批量同时进行。
[请告知我如何使用Python 3更新到期字段。
您可以使用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)的获取/输出。
我刚刚尝试过:`