Disebabkan keperluan projek, projek telah dinaik taraf kepada php7
. Tetapi selepas menaik taraf, saya mendapati bahawa sambungan mongo
tidak lagi tersedia. php7.0
Di atas hanya menyokong mongodb
sambungan. mongodb
Pemacu lanjutan adalah lebih rumit dan tidak jelas untuk digunakan berbanding sambungan monmgo
. Saya telah mencarinya dalam talian untuk masa yang lama. Akhirnya jumpa kelas mongodb
yang agak ringkas. Sintaks adalah serupa dengan mongo
. Jelas dan semula jadi.
Alamat projekhttps://github.com/mongodb/mongo-php-library
Sebab projek itu disumbangkan oleh rakan asing. Jadi tiada dokumen jelas yang boleh dibaca. Berikut adalah beberapa kaedah yang biasa digunakan.
Dapatkan contoh
$uri = "mongodb://username:password@host/database"; $client = new \MongoDB\Client($uri);
Dapatkan koleksi
$collection = $client->selectCollection('test','test');
Dapatkan satu keping data
$data = $collection->findOne(['id'=>1]);
Dapatkan berbilang keping data
$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);
Alih keluar pendua
$fileName = 'name'; $where = ['id' => ['$lt' => 100]] $ret = $this->collection->distinct($fileName,$where);
Masukkan satu keping data
$data = array( 'id' => 2, 'age' => 20, 'name' => '张三' ); $ret = $collection->insertOne($data); $id=$ret->getInsertedId();
Sisipan kelompok
$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());
Kemas kini satu bahagian
$ret = $collection->updateOne(array('id' => 2), array('$set' => array('age' => 56)));
Kemas kini banyak Artikel
$ret = $collection->updateMany(array('id' => ['$gt' => 1]), array('$set' => array('age' => 56, 'name' => 'x')));
Padam satu item
$ret = $collection->deleteOne(array('id' => 2));
Padam berbilang item
$collection->deleteMany(array('id' => array('$in' => array(1, 2))));
Penggabungan
$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); }