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

Une introduction à une classe tripartite php7+mongodb

不言
Libérer: 2023-04-04 06:44:02
original
3140 Les gens l'ont consulté

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);
Copier après la connexion

Obtenir une collection

$collection = $client->selectCollection('test','test');
Copier après la connexion

Obtenir un élément de données

$data = $collection->findOne(['id'=>1]);
Copier après la connexion

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);
Copier après la connexion

Supprimer les doublons

$fileName = 'name';
$where = ['id' => ['$lt' => 100]]
$ret = $this->collection->distinct($fileName,$where);
Copier après la connexion

Insérer une seule pièce de données

$data = array(
    'id' => 2,
    'age' => 20,
    'name' => '张三'
);
$ret = $collection->insertOne($data);
$id=$ret->getInsertedId();
Copier après la connexion

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());
Copier après la connexion

Mettre à jour une seule pièce

$ret = $collection->updateOne(array('id' => 2), array('$set' => array('age' => 56)));
Copier après la connexion

Mettre à jour plusieurs articles

$ret = $collection->updateMany(array('id' => ['$gt' => 1]), array('$set' => array('age' => 56, 'name' => 'x')));
Copier après la connexion

Supprimer un élément

$ret = $collection->deleteOne(array('id' => 2));
Copier après la connexion

Supprimer plusieurs éléments

$collection->deleteMany(array('id' => array('$in' => array(1, 2))));
Copier après la connexion

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);
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal