I am having a problem with MongoDB ID changing after I upsert a document.
public function upsert(User $user) {
$userMongo = new UserMongo($user);
if(!$userMongo->getUuid()) {
$userMongo->setUuid(new ObjectID);
$this->collection->insertOne($userMongo);
} else {
$userMongo->setUuid(new ObjectID($userMongo->getUuid()));
$this->collection->updateOne(["_id" => $userMongo->getUuid()], ["\$set" => $userMongo]);
}
$userMongo->setUuid($userMongo->getUuid()->__toString());
return $userMongo;
}
This should create a new document from php object with newly created objectID, and return the php object with created ObjectID. However this returns ObjectID A(ie. "5986c0c8e13823329a682c81") and stores it as ObjectID B(ie. "5986c0c8e13823329a682c82"). The stored ObjectID and returned ObjectID are slightly different (last digit).
Why am I getting different ObjectIDs and how can I retrieve the ObjectID of newly created document from upsert?