2014-10-29 50 views
0

嗨,大家好,我将从MySQL切换到MongoDB,因为我的服务器运行效率更高。我需要更新我的一个页面,我已经找出了大部分代码,并且我没有收到任何数据库错误,我相信即使没有按照正确的顺序输入数据。当页面加载时,没有内容。Mongo DB将数据拉到php表

这里是我的数据库信息将有多个数组,如下面的数据库测试中的一个。我希望它把所有带有PENDING NameState的类都放到表中。

array(
"_id"=>100000005, 
"dclass"=>"Distributed", 
"fields"=>array(
    "Name"=>array(
     "_0"=>"Testing", 
    ), 
    "NameState"=>array(
     "_0"=>"PENDING", 
    ), 
    'setName': { 
     '_0': 'test name' 

这里是我的数据库查询 $ M与我的数据库连接

$search = $m->fields->(array('NameState'=>'PENDING')); 

那么这里就是我的表,我想的ID显示,目前的setName而名定义。

foreach ($SEARCH as $row) { 
       echo "<tr>"; 
       $ID = $row['_id']; 
       echo "<td>" . $row['_id'] . "</td>"; 
       echo "<td>" . $row['SetName'] . "</td>"; 
       echo "<td>" . $row['Name'] . "</td>"; 
       $NAME = $row['Name'] . "</td"; 
       echo "</tr>"; 

在先进的感谢。

回答

0

如果它是您的数据的确切格式,那么问题是,它不是JSON格式。您的内容必须采用JSON格式,而不是任何任意字符串。 在收集我已经添加了两个文件,一个名为 'TESTDATA'

> db.testData.find() 
{ "_id" : 100000005, "dclass" : "Distributed", "fields" : { "Name" : "Testing", "NameState" : "PENDING" } } 
{ "_id" : 100000006, "dclass" : "Distributed", "fields" : { "Name" : "Testing Excluded", "NameState" : "NOT PENDING" } } 

在PHP我的查询是这样的,

$m = new \MongoClient(); 
$collection = $m->selectCollection('mydb', 'testData'); 
$list = $collection->find(); 

$query = array('fields.NameState' => 'PENDING'); 

$cursor = $collection->find($query); 
foreach ($cursor as $doc) { 
    var_dump($doc); 
} 

结果是:

array(3) { ["_id"]=> float(100000005) ["dclass"]=> string(11) "Distributed" ["fields"]=> array(2) { ["Name"]=> string(7) "Testing" ["NameState"]=> string(7) "PENDING" } } 
+0

如果你能提供给我一个例子我应该有足够的体面来自己研究其余的。谢谢瑞恩 – Ryan 2014-10-29 16:56:18