Java 8 如何知道Couchbase是否使用UPSERT更新或插入记录

Java 8 如何知道Couchbase是否使用UPSERT更新或插入记录,java-8,couchbase,Java 8,Couchbase,我正在使用Couchbase java SDK读写数据。目前我有大量的记录需要保存在Couchbase中。这些记录包含新记录或现有记录 我正在使用此功能。但我还需要记录有多少记录被创建或更新到Couchbase中 如何有效地实现这一点?下面是我现在使用的伪代码 JsonDocument doc = bucket.get("docId") if (doc != null) { // Perform update updatedCount++; } else { // per

我正在使用Couchbase java SDK读写数据。目前我有大量的记录需要保存在Couchbase中。这些记录包含新记录或现有记录

我正在使用此功能。但我还需要记录有多少记录被创建或更新到Couchbase中

如何有效地实现这一点?下面是我现在使用的伪代码

JsonDocument doc = bucket.get("docId")
if (doc != null) {
    // Perform update
    updatedCount++;
} else {
    // perform insert
    insertedCount++;
}

有没有想过用更好的方法来做这件事。因为我有超过500k条记录要保存到Couchbase中。

不幸的是,我们目前没有公开UPSERT是执行插入还是执行更新

如果您愿意在性能上受到一些影响,那么可以在插入失败后直接执行插入,然后进行更新,并跟踪插入失败的频率。这将为您提供一些关于upsert执行insert而不是update的频率指示


如果这对性能的影响太大,您可以在1/1000或1/10000000操作中执行两步操作。这将在生成有用信息时保持性能损失可控。

不要使用
get
查看文档是否存在,而应该使用
exists
方法-是否可以将文档集合插入Couchbase?是的。从这个页面()可以看到,UPSERT语句可以有多个键值对(在“values子句”中)。