PHP操作MongoDB資料庫詳細例子介紹(增、刪、改、查) (六),mongodb資料庫
PHP操作mongodb:
PHP 要操作mongodb需要打模組
官網可以下載:http://pecl.php.net/package/mongo 下載
mongodb設定成使用者授權的啟動方式
php手冊沒有些使用者授權方式登陸的方法:
conn.php
<?php
$conn = new Mongo("mongodb://user1:123456@localhost:27017/test"); //使用者授權連結mongodb test資料庫
$db = $conn->test;
?>
find.php
<?php
include "conn.php";
$c1 = $db->c1; //操作c1集合
//由於php裡面不能直接用json
//db.c1.find({name:"user1"}); 不能這麼玩
//{name:"user1"} == array("name"=>"user1") 用這種形式
//[1,2] == array(1,2);
//{} == array()
$arr=array();
$rst = $c1->find($arr);
foreach($rst as $val){
echo "<pre>";
print_r($val['name']); //取id的話 得"_id"
}
例子2:指定值查詢
$arr = array("name"=>"user1"); //查詢nam=user1的
$rst = $c1->find($arr);
foreach($rst as $val){
echo "<pre>";
$fis = $val['_id'];
print_r($val);
echo "<a href='user.php?fid={$fid}'></a>"; //你會發現fid傳到user.php的時候變成字串了,怎麼解決?
//user.php 根據_id查mongodb對應的資料
<?php
include "conn.php";
$c1 = $db->c1;
$oid= new MongoId($_GET['fid']); 用這個轉一下
var_dump($oid); //還是Object,不轉的話就是string類型
$arr = array("_id"=>"$oid");
$rst = $c1->find($arr);
foreach($rst as $val){
echo "<pre>";
print_r($val);
}
?>
}
例子3:增加
include "conn.php";
$c1 = $db->c1;
//db.c1.insert({"name"=>"user3",age:30,"sex"=>"nan"});
$arr = array("name"=>"user3","age"=>30,"sex"=>"nan");
if($c1->insert($arr))
echo '成功';
else
echo '失敗';
例子4:刪
include "conn.php";
$c1 = $db->c1;
//db.c1.remove({"name"=>"user2"});
$arr = array("name"=>"user2");
if($c1->remove($arr))
echo '刪除成功';
else
echo '刪除失敗';
例子4:改
include "conn.php";
$c1 = $db->c1;
//db.c1.update({"name"=>"user2"},{$set:{age:20,sex:"nan"}}); 增加欄位
$sarr = array("name"=>"user2");
$darr = array('$set'=>array('sex'=>'nan','age'=>24));
$opts = array('upsert'=>0,'multiple'=>1);
if($c1->update($sarr,$darr,$opts)) //php裡面的update只能傳3個參數
echo '更改成功';
else
echo '更改失敗';
//關閉
$conn->close();
?>
php操作mongoDB資料庫查詢的時怎寫“或”這樣的多個條件查詢代碼?
據我所知,目前mongoDB沒有“或”這個東西
但我剛才在網上查了下
發現了下面的資訊,你參考下吧
在mongodb中有$or 操作符的,官網中給出的例子如下:
Simple:
db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )
With another field
db.foo.find( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } )
The $or operator retrieves matches for each or clause individually and eliminates duplicates when returning results. A number of $or optimizations are planned for 1.8. See this thread for details.
$or cannot be nested.
用php每天定時查詢一次MongoDB,並將所得到的結果儲存到MySQL資料庫中已備調用怎自動每天做一次
可以用 cron 來做
寫個php scrip包含要做的事情
用crontab 調用它
要注意檔案的路徑