我在插入文档后遇到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?