In MySQL I can do something like this:
-- post_id-user_id is unique pair
INSERT INTO userviews(post_id, user_id, view_count)
VALUES(1,1,1),(2,1,1),(3,1,1),(4,1,1)
ON DUPLICATE KEY UPDATE
view_count = view_count + 1;
Or in PostgreSQL:
INSERT INTO userviews(post_id, user_id, view_count)
VALUES(1,1,1),(2,1,1),(3,1,1),(4,1,1)
ON CONFLICT DO UPDATE SET view_count = view_count + 1;
How to do this kind of thing in Tarantool? (Currently I'm using Tarantool's library to upsert in a loop):
import "github.com/tarantool/go-tarantool"
type AX []interface{}
...
for ... {
conn.Upsert(`userviews`, tuple, AX{AX{`+`,viewCountColumn, 1}})
}