Considering a simple mongo document structure:
{ _id, firstTime, lastTime }
The client needs to insert a document with a known ID, or update an existing docu
If you will trigger the following code 2 subsequent times, it will first set both firstVisit
and lastVisit
on document insert (and will return upsertedId
in the response) and on the second it will only update lastVisit
(and will return modifiedCount: 1
).
Tested with Mongo 4.0.5 though I believe should be working with older versions.
db.collection.updateOne(
{_id: 1},
{
$set: {
lastVisit: Date.now()
},
$setOnInsert: {
firstVisit: Date.now()
}
},
{ upsert: true }
);