Mongodb php获取新文档的id?

问题描述 投票:0回答:4

创建文档:

$db->collection->insert($content);
// $newDocID = ???

如何获取新文档的id?

php mongodb mongodb-php
4个回答
62
投票

根据 文档,您传递给

insert
的数组将使用
_id
字段进行修改:

$db->collection->insert($content);
$newDocID = $content['_id'];

34
投票

您还可以在插入之前获取_id。只需使用新的 MongoId ie 将 _id 字段添加到文档即可。

$content['_id'] = new MongoId(); $db->collection->insert($content);

这样做还有很多好处:

    您不需要像 ZagNut 在评论中发布的 fsync 标志 之前的答案。所以你不需要等待DB的回复。
  1. 您不需要实际向数据库插入任何内容来获取 id。所以你可以 准备一些相关的对象,然后
  2. 插入或不插入它们 - 有点像 mongo 不支持的交易(还?)。
  3. 你实际上
  4. 可以在你的应用程序中生成id,而不是在数据库中,所以你可以 在插入之前或之后做任何你想做的事。

24
投票
这对我有用:

$insertResult = $collection->insertOne($object); $id = $insertResult->getInsertedId();
    

1
投票
$newDocument = $db->collection->findAndModify ( $row, $row, null, array('new'=>true,'upsert' => true)); $strId = $newDocument['_id']->{'$id'};

http://php.net/manual/en/mongocollection.findandmodify.php

© www.soinside.com 2019 - 2024. All rights reserved.