2012-05-09 8 views
2

を見つけたとき、私はそれが特定の列内の特定のエントリを検索し、その列でそのエントリを持っているすべての文書を返すプロジェクトを持っているエラーを示します。その入力フィールドが空の場合を除き、エラーはほとんどありません。以下に説明しようとしましょう。MongoDBのは、それが空白のエントリ

マイDB:

A|B|C|D 
1|1|5|5 
2|1| |6 
3|2|7|7 
4|2|8|8 

マイPHP:

$query = array("B" => 1); 
$cursor = $collection->find($query); 

foreach ($cursor as $obj) { 
    echo $obj["A"] . $obj["B"] . $obj["C"] .$obj["D"] . "<br />"; 
} 

私の出力は次のとおりです。私はおよそないで行くにはどうすればよい

1155 
21Notice: Undefined index: C6 

何らかのエラーを出す。空のフィールドとして扱うだけです。私はこれが共通の問題であるかどうかはわかりませんが、私はPHPをまだ使い始めていないし、MongoDBも新しくなっています。キーは、私はMongoDBのとは何の関係もないのthatsと信じて、それを

foreach ($cursor as $obj) { 
    echo $obj["A"] . $obj["B"]. (isset($obj["C"]) ? $obj["C"] : '') .$obj["D"]."<br />"; 
    //It will replace each blank with an '' 
    } 

答えて

2

使用ISSET()。柔軟なドキュメントスキーマの仕組みキーCが特定のドキュメントに存在しないため、フィールドを返すことはありません。

私はPHPでの経験を持っていけません。しかし、あなたが特定のドキュメントに存在しないキー 'C'にアクセスしようとしているので、PHPがエラーをスローすることを確かめてください。

しかし、私はあなたには、いくつかのODM(Object document mappers)を使用する場合、これらの問題を簡単に解決することができると信じています。これは、フィールドのデータ型に基づいてデフォルト値を割り当てることによって問題を解決します。

希望します。

+0

括弧でくくっていたのですが、今は完璧です。ありがとう – EGHDK

0

を使用してインデックスにしようとする前に、アレイ内に存在するかどうかを調べるために

関連する問題