首页 > 解决方案 > 使用php打印文档的mongodb数组字段值

问题描述

嗨,我有一个存储产品的 mongodb 数据库,每个产品文档如下所示:

在此处输入图像描述

使用 php 我想打印数组中"user"的所有实例"comments"我尝试过的内容:

$collection=$db->products;

  $itemID = $_POST['itemID'];

  $cursor = $collection->findOne(["id"=>$itemID]); //find an item 
  //print all user names who commented on item 
  foreach($cursor['comments'] as $c){
          echo "<p> User : ".$c["user"]." </p>";
          }
  ";
  exit();

我得到:

Warning:  Invalid argument supplied for foreach()

这是我第一次这样做,非常感谢您的帮助

标签: phpmongodb

解决方案


  1. 来自 findOne() 文档:与 MongoCollection::find() 不同,此方法将仅返回结果集中的第一个结果,而不是可以迭代的 MongoCursor。

(如果要使用 forEach 构造进行迭代,则需要使用 find().limit(1) 来获取单个文档,或者必须删除 forEach 方法才能使用 findOne() )

  1. 如果您需要遍历评论数组元素并且在数据库中没有找到任何内容,这将是一个问题,因此您需要先检查评论是否存在......

  2. 在结束行之前有 '"; ' 似乎需要删除......


推荐阅读