【问题标题】:How i can return specified fields in mongodb find() coursor?我如何在 mongodb find() 游标中返回特定字段?
【发布时间】:2013-07-16 00:26:12
【问题描述】:

我试试:

$fields = array('name'=>true);
find (array(array(), $fields))

但它不起作用(我什么也没得到)而且我看不到我的错误。对不起:(

【问题讨论】:

    标签: php mongodb field


    【解决方案1】:

    如果使用mongodb/mongodb php composer包,需要指定projection选项:

    find([], ['projection' => ['name' => false]])
    

    另一个选项示例:

    find([], ['limit' => 5, projection' => ['name' => false], ...])
    

    【讨论】:

      【解决方案2】:

      find 的 PHP 函数不能这样工作。试试:

      find(array(), array('name'=>1))
      

      (基本省略了周围的array

      这里是文档页面供参考:http://php.net/manual/en/mongocollection.find.php

      【讨论】:

      • 嗨,我明白了,但它不适用于我的班级,有什么想法吗?谢谢你。 ;-) public function mongoGet($f) { $cursor = $this->MoTbl->find($f); $k = array(); $i = 0; while($cursor->hasNext()) { $k[$i] = $cursor->getNext(); $i++; } return $k; }
      • @lun4tic 你是什么意思它没有工作?什么级别?你能显示一些代码吗?
      • 对不起,我今天有点困惑。 ;-) 我调用函数:$m->mongoGet(array(), $fields); 在这个例子中,我收到所有字段,而不是 $fields 数组中指定的字段。
      【解决方案3】:

      如果您要在所有记录中查找特定字段,您可以执行以下操作:

      $cursor = $collection->find();
          foreach( $cursor->fields(array('myField' => true )) as $doc ) {
              echo "<pre>";
              var_dump($doc);
              echo "</pre>";
      

      这将只为集合中的每个文档返回“myFeild”。

      http://php.net/manual/en/mongocursor.fields.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-13
        • 2015-06-09
        • 1970-01-01
        相关资源
        最近更新 更多