【问题标题】:How do I get the ID from mongodb with PHP?如何使用 PHP 从 mongodb 获取 ID?
【发布时间】:2018-08-06 21:04:50
【问题描述】:

我正在尝试从 mongodb 获取 ID,以便使用 axios 使用 PHP 和 vue.js 从简单的 CRUD 应用程序中修改和删除用户

当我插入任何用户时,我都会得到这个 id。

{ "$oid": "5a8fd1ef1233610e40007667" }

我只需要 mongodb 自己生成的 ID。

"5a8fd1ef1233610e40007667"

我使用 POST 来获取 ID,这就是我使用 var_dump() 时得到的结果

string(15) "[object Object]"

¿知道如何获取该 ID 吗?我已经尝试了几件事,希望你们能帮助我

【问题讨论】:

标签: php mongodb vue.js axios


【解决方案1】:

查看The MongoDB\BSON\ObjectId 类。

在 MongoDB 中,存储在集合中的每个文档都需要一个唯一的 _id 字段作为主键。如果插入的文档省略了_id字段,驱动会自动为_id字段生成一个ObjectId。

特别是 MongoDB\BSON\ObjectId::__toString,它返回 ObjectId 的十六进制表示。您可以通过将 ObjectId 转换为字符串来调用 __toString,例如:

$stringID = (string)$objectID;

插入记录时不需要创建ObjectID,例如(根据您的评论)

$bulk = new MongoDB\Driver\BulkWrite();
$doc  = [ 'firstname' => $firstname, 'lastname' => $lastname ];
$bulk->insert($doc);
$result = $manager->executeBulkWrite('db.collection', $bulk);
var_dump($result);

mongo 驱动程序将创建和设置 '_id' 字段,insert 通过引用获取数组并可以更改它。

【讨论】:

  • 我使用 BulkWrite 在数据库中插入 id。 $bulk = 新的 MongoDB\Driver\BulkWrite; $doc = [ '_id' => new MongoDB\BSON\ObjectID, 'firstname' => $firstname, 'lastname' => $lastname ]; $bulk->插入($doc);这会生成一个由 24 个字母和数字组成的随机数。
  • 请查看更新后的答案,了解如何正确执行此操作。
  • 你说得对,我不需要创建 ObjectID。我做到了,在 echo 我得到 string(0) "" 。
  • 请阅读BulkWrite,确保您正在调用executeBulkWrite,并检查它的返回值。 BulkWrite 似乎不是您要找的。​​span>
  • 但是,这并不能回答我的问题。您在谈论插入,而我的问题是关于删除和更新。我仍然得到[object Object]。我已经尝试在没有 vue.js 的情况下处理它并且效果很好。我想,“问题”是 vue.js 和 mongodb 一起工作的时候。无论哪种方式,我都感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多