我有两个问题:如何通过php mongodb驱动程序获取受影响的行,以及最后一个插入ID如何?谢谢。
答案 0 :(得分:4)
我不相信mongodb可以使用任何类型的affected_rows()方法。至于最后一个插入_id您可以在应用程序代码中生成它们并将它们包含在插入中,因此实际上不需要像insert_id()方法那样的任何mysql。
$id = new MongoId();
$collection->insert(array('
'_id' => $id,
'username' => 'username',
'email' => 'johndoe@gmail.com'
'));
现在您可以根据需要使用$ id中存储的对象。
答案 1 :(得分:4)
您可以使用计数功能直接从光标获得结果数:
$collection->find()->count();
您甚至可以使用以下方式获取集合中所有记录的数量:
$collection->count();
使用insert方法,_id会自动添加到输入数组中。
$a = array('x' => 1);
$collection->insert($a,array('safe'=>true));
var_dump($a);
array(2) {
["x"]=>
int(1)
["_id"]=>
object(MongoId)#4 (0) {
}
}
答案 2 :(得分:2)
也许 MongoDB :: lastError 正在寻找: (http://php.net/manual/en/mongodb.lasterror.php)
它调用 getLastError 命令: (http://www.mongodb.org/display/DOCS/getLastError+Command)
返回,其中包括:
n - 如果更新完成,则这是更新的文档数。
答案 3 :(得分:0)
对于受影响的行数:
$status = $collection->update( $criteria, array( '$set' => $data ) );
$status['n']; // 'n' is the number of affected rows
答案 4 :(得分:0)
如果您有动作的输出,则可以调用相对函数:
// $m hold mongo library object
$output = $m->myCollection->updateOne([
'_id' => myMongoCreateID('56ce2e90c9c037dba19c3ce1')], [
'$set' => ['column' => 'value']
]);
// get number of modified records
$count = $output->getModifiedCount();
$ output的类型为MongoDB\UpdateResult
。相对检查以下文件,找出找到所需内容,删除,匹配或任何结果的最佳函数:
- https://github.com/mongodb/mongo-php-library/blob/master/src/InsertManyResult.php
- https://github.com/mongodb/mongo-php-library/blob/master/src/DeleteResult.php
- https://github.com/mongodb/mongo-php-library/blob/master/src/InsertOneResult.php
- https://github.com/mongodb/mongo-php-library/blob/master/src/UpdateResult.php