php查詢(xún)mongodb
1、查詢(xún)時(shí)的排序
在關(guān)系型數(shù)據(jù)庫(kù)的查詢(xún)中,往往會(huì)用到排序载碌。例如時(shí)間倒序挟阻,點(diǎn)擊率升序啦等等。在Mongodb的查詢(xún)中嗦枢,也有排序功能的攀芯。
語(yǔ)法格式:
$db->find()->sort(array('age' => 1)); //按age字段升序排序。1為升序文虏,-1為降序侣诺。
例如:
<?php
//連接數(shù)據(jù)庫(kù)
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//選擇數(shù)據(jù)庫(kù)
$db = $connnect->selectDB('mydb')->selectCollection("user");
//查詢(xún)所有數(shù)據(jù),按age字段升序排序
$cursor = $db->find()->sort(array('age' => 1));
$array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
print_r($array);
?>
2择葡、查詢(xún)時(shí)的skip和limit操作
同樣紧武,在關(guān)系型數(shù)據(jù)庫(kù)中,有l(wèi)imit可以限制查詢(xún)區(qū)間敏储。在Mongodb中也有類(lèi)似的功能阻星,那就是skip和limit操作。skip是跳過(guò)前多少條數(shù)據(jù)已添;limit是查詢(xún)多少條數(shù)據(jù)妥箕。例如接著上面的列子,我們從第二條數(shù)據(jù)開(kāi)始更舞,查詢(xún)一條數(shù)據(jù)畦幢。代碼如下:
<?php
//連接數(shù)據(jù)庫(kù)
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//選擇數(shù)據(jù)庫(kù)
$db = $connnect->selectDB('mydb')->selectCollection("user");
//按age字段升序查詢(xún),從第二條開(kāi)始缆蝉,查詢(xún)一條數(shù)據(jù)
$cursor = $db->find()->sort(array('age' => 1))->skip(1)->limit(1);
$array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
print_r($array);
?>
3宇葱、查詢(xún)時(shí)的字段篩選
在查詢(xún)時(shí)瘦真,我們往往會(huì)遇到,只需要查詢(xún)某一個(gè)或者多個(gè)特定的字段黍瞧,這就涉及到字段篩選诸尽。語(yǔ)法格式如下:
$db->find(array(), array('age' => true)); //第一個(gè)參數(shù)是查詢(xún)條件,第二個(gè)參數(shù)是字段篩選印颤。值為true您机,表示查詢(xún)?cè)撟侄危恢禐閒alse年局,表示不查詢(xún)?cè)撟侄巍?br>
例如上面的列子际看,我們只想查詢(xún)年齡這個(gè)字段,代碼如下:
<?php
//連接數(shù)據(jù)庫(kù)
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//選擇數(shù)據(jù)庫(kù)
$db = $connnect->selectDB('mydb')->selectCollection("user");
//查詢(xún)age和id兩個(gè)字段矢否。
$cursor = $db->find(array(), array('age' => true, 'id' => true));
$array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
?>
4仲闽、查詢(xún)時(shí)的Like操作
在查詢(xún)時(shí),我們也會(huì)遇到需要模糊查詢(xún)的時(shí)候兴喂。在關(guān)系型數(shù)據(jù)庫(kù)中使用like查詢(xún)即可蔼囊,在mongodb數(shù)據(jù)庫(kù)中,也有模糊查詢(xún)的操作衣迷。語(yǔ)法格式如下:
$db->find(array('name' => new MongoRegex("/^j/"))); //mongodb中的模糊查詢(xún)是通過(guò)正則查詢(xún)的
例如上面的例子畏鼓,我們查詢(xún)名字以j開(kāi)頭的數(shù)據(jù),代碼如下:
<?php
//連接數(shù)據(jù)庫(kù)
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//選擇數(shù)據(jù)庫(kù)
$db = $connnect->selectDB('mydb')->selectCollection("user");
//查詢(xún)name字段以j開(kāi)頭的數(shù)據(jù)
$cursor = $db->find(array('name' => new MongoRegex("/^j/")));
$array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
print_r($array);
?>
5壶谒、查詢(xún)時(shí)的count操作
在查詢(xún)時(shí)云矫,我們也許會(huì)碰到需要查詢(xún)滿(mǎn)足條件的數(shù)據(jù)的總和。這時(shí)就用到了count操作汗菜。語(yǔ)法格式如下:
$db->count();
例如上面的例子让禀,我們查詢(xún)數(shù)據(jù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)總和。代碼如下:
<?php
//連接數(shù)據(jù)庫(kù)
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//選擇數(shù)據(jù)庫(kù)
$db = $connnect->selectDB('mydb')->selectCollection("user");
echo $db->count();
?>
運(yùn)行結(jié)果是:3
6陨界、查詢(xún)時(shí)的or操作
在查詢(xún)時(shí)巡揍,我們也許也會(huì)用到or操作。語(yǔ)法格式如下:
$db->find(array('$or' => array(array('id' => 1), array('name' => 'java'))));
例如上面的例子菌瘪,我們查詢(xún)id是1腮敌,或者name是java的數(shù)據(jù)。代碼如下:
<?php
//連接數(shù)據(jù)庫(kù)
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//選擇數(shù)據(jù)庫(kù)
$db = $connnect->selectDB('mydb')->selectCollection("user");
$cursor = $db->find(array('$or' => array(array('id' => 1), array('name' => 'java'))));
$array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
?>