Le contenu de cet article est une introduction à une classe tripartite php7+mongodb. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
En raison des besoins du projet, le projet a été mis à niveau vers php7. Mais après la mise à niveau, j'ai constaté que l'extension mongo ne pouvait pas être utilisée. PHP7.0 et versions ultérieures ne prennent en charge que l'extension mongodb. Le pilote d'extension mongodb est plus compliqué et verbeux à utiliser que l'extension monmgo. Je le cherche depuis longtemps sur Internet. J'ai enfin trouvé une classe mongodb relativement simple. La syntaxe est similaire à celle de mongo. Clair et naturel.
Adresse du projet https://github.com/mongodb/mongo-php-library
Parce que le projet a été contribué par des amis étrangers. Il n’existe donc aucun document clair et lisible. Voici quelques méthodes couramment utilisées.
Obtenir une instance
$uri = "mongodb://username:password@host/database"; $client = new \MongoDB\Client($uri);
Obtenir une collection
$collection = $client->selectCollection('test','test');
Obtenir un élément de données
$data = $collection->findOne(['id'=>1]);
Obtenir plusieurs éléments de données
$where = ['type'=>1]; $options = array( 'projection' => array('id' => 1, 'age' => 1, 'name' => -1), // 指定返回哪些字段 1 表示返回 -1 表示不返回 'sort' => array('id' => -1), // 指定排序字段 'limit' => 10, // 指定返回的条数 'skip' => 0, // 指定起始位置 ); $data = $collection->find($where,$options)->toArray(); var_dump($data);
Supprimer les doublons
$fileName = 'name'; $where = ['id' => ['$lt' => 100]] $ret = $this->collection->distinct($fileName,$where);
Insérer une seule pièce de données
$data = array( 'id' => 2, 'age' => 20, 'name' => '张三' ); $ret = $collection->insertOne($data); $id=$ret->getInsertedId();
Insérer par lots
$data = array( ['id' => 1, 'age' => 21, 'name' => '1xiaoli'], ['id' => 2, 'age' => 22, 'name' => '2xiaoli'], ['id' => 3, 'age' => 23, 'name' => '3xiaoli'], ['id' => 4, 'age' => 26, 'name' => '4xiaoli'], ['id' => 5, 'age' => 24, 'name' => '5xiaoli'], ['id' => 6, 'age' => 25, 'name' => '6xiaoli'], ); $ret = $collection->insertMany($data); # 返回插入id var_dump($ret->getInsertedIds());
Mettre à jour une seule pièce
$ret = $collection->updateOne(array('id' => 2), array('$set' => array('age' => 56)));
Mettre à jour plusieurs articles
$ret = $collection->updateMany(array('id' => ['$gt' => 1]), array('$set' => array('age' => 56, 'name' => 'x')));
Supprimer un élément
$ret = $collection->deleteOne(array('id' => 2));
Supprimer plusieurs éléments
$collection->deleteMany(array('id' => array('$in' => array(1, 2))));
Agrégation
$ops = [ [ '$match' =>['type'=>['$in'=>[2,4]]] ], [ '$sort' => ['list.create_time' => -1] //sort顺序不能变,否则会造成排序混乱,注意先排序再分页 ], [ '$skip' => 0 ], [ '$limit' => 20000 ], ]; $data = $collection->aggregate($ops); foreach ($data as $document) { var_dump($document); }
Recommandations associées :
Explication détaillée de la façon dont php7 implémente la requête floue MongoDB
La classe d'opération mongodb implémentée par php, php implémente mongodb
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!