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?

0 ответов

Другие вопросы по тегам