php對mongo操作問題

2022-07-18 06:09:10 字數 1945 閱讀 2125

最近由於業務需求,需要使用php對mongo做一些操作,關於mongodb,選擇的版本是:mongodb shell version: 2.0.6

mongodb是一種文件導向資料庫管理系統,由c++撰寫而成,以此來解決應用程式開發社群中的大量現實問題。2023年10月,mongodb由10gen團隊所發展。2023年2月首度推出。

wikipedia             

mongodb的操作,對比mysql,有不少有意思的地方,在使用中,也發現一些不同的問題,本篇主要記錄一下,mongodb對資料型別的要求

首先,我們用php操作mongodb,插入一些資料,執行指令碼如下

$server = "mongodb:";

$opt = array

( 'connect' => true,

'readpreference' => mongoclient::rp_secondary_preferred,

//'replicaset' => 'log',

'connecttimeoutms' => 3000,

'w' => 1,

'wtimeout' => 2000,);

$ins = new mongoclient($server, $opt

);//

獲取db

$db = $ins->testdb;

//查詢的表

$collection = $db->test_collections;

/**********************

* 插入

********************

*/$insertarr = array

( "name" => "testname",

"id" => 123455,

"sid" => "123456",

"arr" => (object)array('x'=>1, y=>2),);

$collection->insert($insertarr);

在插入乙個對比資料,

$insertarr = array

( "name" => "testname",

"id" => 123455,

"sid" => 123456,

"arr" => (object)array('x'=>1, y=>2),);

與前面插入的不同的是,php在沒有指定型別的情況下,前面乙個sid會是string型別,後面乙個會預設是int型別。

那麼在db裡面會形成兩條記錄如下

插入後,我們在做查詢工作,查詢指令碼如下

//

------資料庫連線省略----

$query = array

( "sid" => array('$gt' => 1),);

//$collection->find($query);

$cursor = $collection->find($query

);while ($cursor->hasnext())

查詢中,會發現,只能查出一條資料,我們只能查出 "sid": 123456,而沒有辦法查出 "sid":"123456",  說明mongodb 會關注查詢條件中的資料型別。而想要查出 "sid":"123456",可以用下面辦法,php中強制指名查詢條件的資料型別

$str = 1;

$query = array

( "id" => array('$gt' => (string)$str),);

//$collection->find($query);

$cursor = $collection->find($query

);while ($cursor->hasnext())

Mongo操作教程之PHP擴充套件

接下來我們從命令列和php程式兩個方面進行對php程式對mongodb的連線 增刪改查進行詳細的講解與 例項。1 首先進行資料庫的連線與建立,比如我們預設連線主機和埠為 mongodb localhost 27017的mongodb,然後建立資料庫rision。m new mongoclient 連...

PHP操作mongo資料庫

conn new mongoclient mongodb localhost 27017 mongodb username password host port db conn chili 選擇資料庫 col db test 選擇集合 dbs conn listdbs 檢視所有的表 collecti...

mongo簡單操作

use admin 進入資料庫admin db.adduser name pwd 增加或修改使用者密碼 db.system.users.find 檢視使用者列表 db.auth name pwd 使用者認證 db.removeuser name 刪除使用者 show users 檢視所有使用者 sh...