创建文档:
$db->collection->insert($content); // $newDocID = ???
字符串如何获取新文档的ID?
kyks70gy1#
根据the docs,传递给insert的数组将被修改为_id字段:
insert
_id
$db->collection->insert($content); $newDocID = $content['_id'];
字符串
nxagd54h2#
你也可以在 * insert之前获取_id *。只要用新的Mongolid ie将_id字段添加到文档中。
$content['_id'] = new MongoId(); $db->collection->insert($content);
字符串这也有很好的好处:1.你不需要像ZagNut在上一个答案中的评论那样使用fsync标志。所以你不需要等待DB的回复。1.你不需要在DB中插入任何东西来获取id。所以你可以准备一些相关的对象,然后插入或不插入它们-有点像mongo不支持的transactions(还没有?)。1.实际上,你可以在你的应用程序中生成id,而不是在数据库中,所以你可以在插入之前或之后做任何你想做的事情。
6rqinv9w3#
这对我来说很有效:
$insertResult = $collection->insertOne($object); $id = $insertResult->getInsertedId();
qltillow4#
$newDocument = $db->collection->findAndModify ( $row, $row, null, array('new'=>true,'upsert' => true)); $strId = $newDocument['_id']->{'$id'};
字符串http://php.net/manual/en/mongocollection.findandmodify.php
4条答案
按热度按时间kyks70gy1#
根据the docs,传递给
insert
的数组将被修改为_id
字段:字符串
nxagd54h2#
你也可以在 * insert之前获取_id *。只要用新的Mongolid ie将_id字段添加到文档中。
字符串
这也有很好的好处:
1.你不需要像ZagNut在上一个答案中的评论那样使用fsync标志。所以你不需要等待DB的回复。
1.你不需要在DB中插入任何东西来获取id。所以你可以准备一些相关的对象,然后插入或不插入它们-有点像mongo不支持的transactions(还没有?)。
1.实际上,你可以在你的应用程序中生成id,而不是在数据库中,所以你可以在插入之前或之后做任何你想做的事情。
6rqinv9w3#
这对我来说很有效:
字符串
qltillow4#
字符串
http://php.net/manual/en/mongocollection.findandmodify.php