我有一个项目,它搜索特定列中的特定条目,然后返回该列中包含该条目的所有文档。它几乎完美地工作,除非该输入字段为空时它会给出错误。让我试着说明一下。
我的数据库:
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的新手。
答案 0 :(得分:2)
在尝试使用它进行索引之前,使用isset()来确定数组中是否存在该键
foreach ($cursor as $obj) {
echo $obj["A"] . $obj["B"]. (isset($obj["C"]) ? $obj["C"] : '' ) .$obj["D"]."<br />";
//It will replace each blank with an ''
}
答案 1 :(得分:0)
我认为这与mongodb无关。它的灵活文档架构如何工作。它不会返回该字段,因为密钥C
在特定文档中不存在。
我没有任何PHP经验。但是我确定php会抛出错误,因为您正在尝试访问特定文档中不存在的密钥“C”。
但我相信如果您使用ODM
(Object document mappers),可以轻松解决这些问题。它通过根据字段的数据类型分配默认值来解决问题。
希望有所帮助