Tob*_*oby 11 php upsert mongodb
是否可以在查询后获取新的/更新的_id?示例代码:
$key = array( 'something' => 'unique' );
$data = array( '$inc' => array( 'someint' => 1 ) );
$mongodb->db->collection->update( $key, $data, array( 'upsert' => true ) );
Run Code Online (Sandbox Code Playgroud)
$ key没有持有新的/旧的_id对象,我认为$ data也不会因为它只是一个指令.
Cam*_*ron 16
是的 - 可以使用单个查询.
MongoDB包含一个findAndModify命令,可以自动修改文档并将其返回(默认情况下,它实际上会在文档被修改之前返回).
PHP驱动程序在集合类上没有包含一个方便的方法(但是 - 看看这个bug),但它仍然可以使用(注意我的PHP很糟糕,所以我很可能会出现语法错误在以下代码段中:
$key = array( 'something' => 'unique' );
$data = array( '$inc' => array( 'someint' => 1 ) );
$result = $mongodb->db->command( array(
'findAndModify' => 'collection',
'query' => $key,
'update' => $data,
'new' => true, # To get back the document after the upsert
'upsert' => true,
'fields' => array( '_id' => 1 ) # Only return _id field
) );
$id = $result['value']['_id'];
Run Code Online (Sandbox Code Playgroud)
Jes*_*sse 15
为了防止有人像我一样偶然发现这个问题,Mongo实际上会在你调用MongoCollection-> save()时修改输入数组; - 将id附加到最后.所以,如果你打电话:
$test = array('test'=>'testing');
mongocollection->save($test);
echo $test['_id'];
Run Code Online (Sandbox Code Playgroud)
您将拥有该对象的mongo id.
| 归档时间: |
|
| 查看次数: |
12394 次 |
| 最近记录: |