php - 使用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()
这是我第一次这样做,非常感谢您的帮助
解决方案
- 来自 findOne() 文档:与 MongoCollection::find() 不同,此方法将仅返回结果集中的第一个结果,而不是可以迭代的 MongoCursor。
(如果要使用 forEach 构造进行迭代,则需要使用 find().limit(1) 来获取单个文档,或者必须删除 forEach 方法才能使用 findOne() )
如果您需要遍历评论数组元素并且在数据库中没有找到任何内容,这将是一个问题,因此您需要先检查评论是否存在......
在结束行之前有 '"; ' 似乎需要删除......
推荐阅读
- vim - VimL 中的 get(b:, ...) 是什么?
- php - 如何将 php 类扩展为覆盖其功能的类
- angular - 更改使用 ngFor 的按钮内的文本
- python - 在 pyiinstaller 中找不到 client_secrets.json
- ruby-on-rails - 如何调试“Articles#show 中的 NoMethodError”?
- python - 使用 python 应用程序进行多处理以缩短当前 36 小时的运行时间
- python - 我可以选择手动更新我的神经网络中的权重以允许基本上无限的批量大小吗?
- javascript - 使用 InjectionToken 进行注入?
- php - 如何在 Wordpress 中显示图像
- ios - IOS app crash with CFNetwork,但找不到问题