N1QL 中的 Upsert:如何计算现有文档的值

Upsert in N1QL: How to count-up a value of an existing document

我想根据唯一键插入一个文档,或者如果文档已经存在则更新一个计数器。

UPSERT documentation of DP4 中,我找到了一个示例,表明 UPSERT 更像是 INSERT 或 REPLACE。

UPSERT INTO product (KEY, VALUE) 
VALUES ("EAN1234567", 
        { "productId": "EAN1234567", "counter": 1}) 
RETURNING * ;

如何增加 UPSERT 中现有条目的计数器?

您可以在 N1QL 中使用 MERGE 语句。

MERGE INTO product p USING (SELECT NULL) s ON KEY 你的钥匙 匹配后更新 SET p.counter = p.counter + 1 如果不匹配,则插入 ...;