2

我有一个项目,它在特定列中搜索特定条目,然后返回该列中包含该条目的所有文档。它几乎可以完美地工作,除非该输入字段为空时会出错。下面我试着说明一下。

我的数据库:

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 还是很陌生。

4

2 回答 2

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 ''
    }
于 2012-05-09T08:09:59.633 回答
0

我相信那与mongodb无关。它是灵活的文档模式的工作原理。它不会返回该字段,因为C特定文档中不存在该键。

我对 PHP 没有任何经验。但我确信 php 会引发错误,因为您正在尝试访问特定文档中不存在的键“C”。

ODM 但我相信如果你使用一些(Object document mappers)可以很容易地解决这些问题。它通过根据字段的数据类型分配默认值来解决问题。

希望能帮助到你

于 2012-05-09T08:21:24.763 回答