MongoDB (PHPLib) ObjectID изменяется после upsert
У меня возникла проблема с изменением идентификатора MongoDB после отправки документа.
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;
}
Это должно создать новый документ из объекта php с вновь созданным objectID и вернуть объект php с созданным ObjectID. Однако это возвращает ObjectID A(т. Е. "5986c0c8e13823329a682c81") и сохраняет его как ObjectID B(т. Е. "5986c0c8e13823329a682c82"). Сохраненный ObjectID и возвращенный ObjectID немного отличаются (последняя цифра).
Почему я получаю разные ObjectID и как я могу получить ObjectID недавно созданного документа из upsert?