MongoDB(PHPLib)ObjectID在upsert后发生变化

时间:2017-08-06 06:59:32

标签: php mongodb objectid phplib

我在插入文档后遇到MongoDB ID更改问题。

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;
  }

这应该使用新创建的objectID从php对象创建一个新文档,并返回带有创建的ObjectID的php对象。然而,这返回ObjectID A(即“5986c0c8e13823329a682c81”)并将其存储为ObjectID B(即“5986c0c8e13823329a682c82”)。存储的ObjectID和返回的ObjectID略有不同(最后一位数字)。

为什么我会获得不同的ObjectID,如何从upsert中检索新创建的文档的ObjectID?

0 个答案:

没有答案