根據 PHP 版本(5.3/5.4/5.5...)、架構(x86/x64)、線程安全性(TS/NTS)下載正確的 php_mongo.dll。
php_mongo.dll 複製到 PHP 擴展目錄:/php/ext/php.ini,新增行:extension=php_mongo.dllphp -m | grep mongo 或查看 phpinfo() 驗證載入成功// 標準連接格式:mongodb://[username:password@]host:port/database
$conn = new Mongo("mongodb://localhost:27017");
帶認證連接:
$conn = new Mongo("mongodb://admin:password@localhost:27017/admin");
// 選擇資料庫(不存在會自動建立)
$db = $conn->selectDB('yyd');
// 或簡寫:$db = $conn->yyd;
// 選擇集合(相當於關係型資料庫的表)
$collection = $db->selectCollection('yyd_test');
// 或簡寫:$collection = $db->yyd_test;
$post = array(
'name' => '張三',
'sex' => '男',
'age' => 25,
'email' => 'zhangsan@example.com'
);
$result = $collection->insert($post);
var_dump($result); // 返回包含 _id 的陣列
查詢所有:
$cursor = $collection->find(array());
foreach ($cursor as $doc) {
echo "<pre>";
echo "_id: {$doc['_id']}<br>";
echo "name: {$doc['name']}<br>";
echo "sex: {$doc['sex']}<br>";
echo "age: {$doc['age']}<br>";
echo "email: {$doc['email']}<br>";
echo "</pre>";
}
條件查詢:
find(array("name" => "張三"));
進階查詢運算符:
find(array("age" => array('$gt' => 18, '$lt' => 60)));
// 正則匹配
$cursor = $collection->find(array("name" => new MongoRegex("/^張/")));
// 限制筆數與跳過
$cursor = $collection->find()->limit(10)->skip(20);
update(
array("name" => "張三"), // 查詢條件
array('$set' => array( // 更新操作
"email" => "new_email@test.com",
"age" => 26
))
);
// 更新所有匹配文檔(第三參數 multiple = true)
$collection->update(
array("sex" => "男"),
array('$inc' => array("age" => 1)), // 年齡 +1
array("multiple" => true)
);
remove(array("name" => "張三"));
// 刪除第一筆匹配文檔(第二參數 justOne = true)
$collection->remove(array("name" => "張三"), array("justOne" => true));
close();
// 刪除整個資料庫(謹慎使用!)
$conn->dropDB("yyd");
// 列出所有資料庫
$dbs = $conn->listDBs();
print_r($dbs);
⚠ 版本注意: 此篇使用的是舊版 mongo 擴展(PHP 5.x 時代)。現代 PHP 7+ 專案請使用 mongodb 擴展(composer require mongodb/mongodb),API 完全不同,請參考 官方文檔。
$collection->ensureIndex(array("email" => 1))batchInsert() 提升效能try { ... } catch (MongoException $e) { ... }