0
在mongodb中,我有一個字段必須是從0到MAX
(整數最終變量)。 每個值命中MAX
時它必須返回0。 執行此我想這(JAVA):java mongodb - 只有在範圍內才設置字段
Document document = coll.findOneAndUpdate(
filter,
new Document(//update
"$inc",
new Document("counter", 1)
)
);
int count = (document != null) ? document.getInteger("counter") : 0;
if(count >= MAX) {
count-= MAX;
coll.updateOne(filter, new Document("$set", new Document("counter", count));
}
唯一的問題是,這是不同步的,並可能導致櫃檯失去一些計數如果多個客戶端在同一時間訪問它。爲了使這個同步,我必須測試count
是在從count
到max
範圍之前設置它,我怎麼能做到這一點?
您可以將代碼片段放入同步塊中。但它嚴重影響性能。 – harshavmb
這不僅僅是性能,它不會是多個機器的原子 – SnowyCoder