PHP & MONGODB 內嵌文件取得

摘要:PHP & MONGODB 內嵌文件取得

我有mailbox

而mailbox有個人資訊,及他的所有信件資訊。

這樣看起來,其實在MongoDB

個人資訊為collection底下,

而所有信件資訊,就是這個人資訊的其中一個屬性inboxs

而inboxs是一個 文件array

我要取得這文件array的其中一項時,他的id為pid

 

這就是只取得內嵌文件的其中一項。

這時候mongo db會如何下呢

他有

findOne,有兩個參數,第一個是主要的查詢主要文件項目,第二個是,這個文件項目下再查詢子項目出來

db.collection.findOne({'_id':'tomlai'},{'inboxs':{$elemMatch:{'pid':10000}}});

 

在PHP的話,就這樣寫

		
		$conn= new Mongo("mongodb://user:password@127.0.0.1:27017");
		$db = $conn->selectDB('mailbox');
		$db->authenticate("user","password");
		$collection = new MongoCollection($db,'mailbox');
		
		$query_doc = array('_id'=> 'tomlai');
		$query_field_doc = array("inboxs"=>array('$elemMatch'=>array('pid'=>$pid)));
		$data = $collection->findOne($query_doc,$query_field_doc);

		$datas= NULL;
	    if($data['inboxs'][0]['data']!=NULL)
		{
		   datas= $data['inboxs'][0]['data'];
		}
		$conn->close();