取MONGOID对象的ID字符串值其实就像mysql中返回数据记录的ID号了,这样的做法是非常的简单了,下面我们一起来看看。
使用GridFS传文件到MongoDB,会返回一个MongoId对象,通常我们需要把这个对象中的$id值以字符串形式保存到数据库中,作为取文件的标识,那么PHP如何取出MongoID对象的ID字符串值呢?
在php中通过_id 在mongodb中查找特定记录:
查询条件需要这样写:array("_id"=>new MongoId("$id"))这个MongoId形如:
object(MongoId)#23 (1) {
["$id"] => string(24) "558a7dab988d4d10140058b1"
}
我们要用PHP取出["$id"]的值,问题是这个键名是这种形式的,用$re->$id肯定不对,所以这样取值:
//存储上传的excel到MongoDB
public function saveToMongo($file){
$id = $this->getGridFS()->storeFile($file);
return $id->{'$id'};
}
这样就OK了。
<?php
$database = 'test';
$collection = 'runoob';
$mongoClient = new MongoClient();
$MongoCollection = $mongoClient->selectDB($database)->selectCollection($collection);
foreach ($MongoCollection->find() as $item) {
echo 'MongoId:', $item['_id']->{'$id'}, '<br />';
mongodb+php通过_id查询
在php中通过_id 在mongodb中查找特定记录:
正确: $
where
=array(
"_id"
=>
new
MongoId($_GET[
'id'
]));
错误:$result=$collection->find(['_id'=>'6335673fc34fafe03a000040']);
<?php
$conn=new Mongo("127.0.0.1:27017"); #连接指定端口远程主机
$db=$conn->sky; #选择mydb数据库
$collection=$db->bobo; #选择集合(选择’表’)
//** 查询一条数据 **/
//$cursor = $collection->findOne();
$where=array("_id"=>new MongoId($_GET['id']));
$cursor = $collection->find($where);
/**
* 注意:findOne()获得结果集后不能使用snapshot(),fields()等函数;
*/
$array ='';
foreach ($cursor as $id => $value) {
$array[]=$value;
}
echo "<pre>";
print_r($array);
echo "</pre>";
$conn->close(); #关闭连接
?>