id = $id; $this->iv = $iv; $this->xv = $xv; $this->sv = $sv; } public function getId() { return $this->id; } public function getIv() { return $this->iv; } public function getXv() { return $this->xv; } public function getSv() { return $this->sv; } public function setId($id) { $this->id = $id; } public function setIv($iv) { $this->iv = $iv; } public function setXv($xv) { $this->xv = $xv; } public function setSv($sv) { $this->sv = $sv; } public function __toString() { return sprintf('(%d, %f, %s)', $this->iv, $this->xv, $this->sv); } } function myserialize($o) { return array('id' => $o->getId(), 'iv' => $o->getIv(), 'xv' => $o->getXv(), 'sv' => $o->getSv()); } function mydeserialize($d) { return new Data($d['id'], $d['iv'], $d['xv'], $d['sv']); } function dump($col, $doc) { echo 'dumping ' . json_encode($doc) . "\r\n"; $da = $col->find($doc)->toArray(); if(count($da) > 0) { //echo json_encode($da[0]); $o = mydeserialize($da[0]); echo "$o\r\n"; } else { echo "Not found\r\n"; } } define('NREC', 1000); define('PHP_OFFSET', 5 * 1000); // open $client = new Client('mongodb://localhost:27017'); $db = $client->TestDB; $col = $db->data; // put all for($i = 0; $i < NREC; $i++) { $o = new Data('Doc#' . (PHP_OFFSET + $i + 1), $i + 1, $i + 1.0, 'This is value ' . ($i + 1)); $col->insertOne(myserialize($o)); } // $doc = array('id' => 'Doc#' . (PHP_OFFSET + 77)); // get dump($col, $doc); // delete $col->deleteOne($doc); // get non-existing dump($col, $doc); // update and get $doc = array('id' => 'Doc#' . (PHP_OFFSET + 88)); dump($col, $doc); $o = mydeserialize($col->findOne($doc)); $o->setIv($o->getIv() + 1); $o->setXv($o->getXv() + 0.1); $o->setSv($o->getSv() . ' updated'); $col->findOneAndReplace($doc, myserialize($o)); dump($col, $doc); // list all $n = 0; foreach($col->find() as $itd) { $ito = mydeserialize($itd); if(strpos($ito->getId(), 'Doc#') != 0) { echo 'Unexcpected document: ' . $ito->getId() . "\r\n"; } if($ito->getIv() < 1 || NREC < $ito->getIv()) { echo 'Unexcpected value: ' . $ito . "\r\n"; } $n = $n + 1; } echo "$n\r\n"; // list documents where "Doc#n075" <= id < "Doc#n085" $n2 = 0; $doc = array( 'id' => array( '$gte' => 'Doc#' . (PHP_OFFSET + 75), '$lt' => 'Doc#' . (PHP_OFFSET + 85) )); foreach($col->find($doc) as $it2d) { $it2o = mydeserialize($it2d); if(strpos($it2o->getId(), 'Doc#') != 0) { echo 'Unexcpected document: ' . $it2o->getId() . "\r\n"; } $n2 = $n2 + 1; } echo "$n2\r\n"; ?>