Maison  >  Article  >  développement back-end  >  Une introduction à une classe tripartite php7+mongodb

Une introduction à une classe tripartite php7+mongodb

不言
不言original
2018-09-10 14:43:223053parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn