php - 使用 mongoDB 和 php 驱动程序管理器从嵌套字段中获取数据
问题描述
我有以下格式的文档:
"_id" : ObjectId("5c6f16d9b4a523195c007ecb"),
"customerId" : "5c6dba6fb4a5231878007845",
"products" : [
{
"id" : "5c6c5b52dac9902ca917c98b",
"name" : "Black Starry Mug"
}
]
我想做的是从产品中检索名称。
<?php
$customerId = $_GET["customer-id"];
$cart = json_decode($_GET["cart"]);
$manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");
$filter = ['customerId' => $customerId];
$options = [];
$query = new MongoDB\Driver\Query($filter , $options);
try {
$result = $manager->executeQuery('GameMerchandise.cart', $query);
$row = $result->toArray();
foreach ($row as $item) {
echo $item->products->name;
}
}catch(MongoDB\Driver\Exception\Exception $e) {
die("Error communicating with database: " . $e);
}
问题来自 foreach 循环中的 echo 部分。我找到了有关如何使用旧版驱动程序执行此操作的信息,但没有找到新版驱动程序的信息。任何帮助将不胜感激。
解决方案
你的对象的products
一部分是一个数组,你也需要循环。尝试这个:
foreach ($row as $item) {
foreach ($item->products as $product) {
echo $product->name;
}
}
推荐阅读
- java - java - 如何将Array List中某些字段的一些不同值与其他List进行比较并返回java spring中的差异?
- php - 点击链接时无法打开上传的文件
- javascript - 遍历数组并从循环中调用数据函数
- laravel - Laravel 未在 Windows 上连接到 Docker/docker-compose 上的数据库
- python - 在 Sklearn 管道中使用 ColumnTransformer() 时出现 ValueError - 为 GloveVectorizer 使用自定义的 Spacy 类
- javascript - 如何使用 HTML、CSS 和 JavaScript 创建一个框来选择大小,如下面的链接所示?
- javascript - 如何使用 Node js 操作 DOM?
- reactjs - 如何解决 react-video-js-player 无法加载媒体的问题
- html - 如何在 CSS 中灰色和模糊的标题下方添加阴影?
- python - 布尔表达式( 0 或 None 和 False)