You want to set 'createdAt' only when a document is first inserted via upsert, but never overwrite it on later updates. Which operator does this?
db.col.updateOne(
{ _id: 1 },
{ $set: { seen: true }, $setOnInsert: { createdAt: new Date() } },
{ upsert: true }
)