Reputation: 27
so my mongodb looks like this:
{
"_id" : ObjectId("60004358bd500000d3006cb3"),
"Name" : "Tsakiris",
"VAT" : "099360123",
"DOY" : "----",
"Address" : "some street",
"TEL" : "2109750115",
"Products" : [
{
"pID" : "099360123/1",
"pNAME" : "Nike Air Force",
"pPRICE" : "95",
"pBRAND" : "Nike",
"pDESCRIPTION" : "50% green eco frindly",
"pCATEGORY" : "Trainers",
"pDEPARTMENT" : "Men/Shoes/Trainers",
"pTHUMBNAIL" : "http://127.0.0.1/pricedoc/assets/img/products/p1.jpg"
},
{
"pID" : "099360123/2",
"pNAME" : "Renato Garini boots",
"pPRICE" : "150",
"pBRAND" : "Renato Garini",
"pDESCRIPTION" : "autumn collection boot 2020",
"pCATEGORY" : "Βoot",
"pDEPARTMENT" : "Men/Shoes/Βoot",
"pTHUMBNAIL" : "http://127.0.0.1/pricedoc/assets/img/products/p2.jpg"
}
],
"nextProductCounter" : 3
}
I'm trying to select data with php
$options = ["typeMap" => ['root' => 'array', 'document' => 'array']];
$m = new MongoDB\Client("mongodb://127.0.0.1/", [], $options);
//$m= new MongoDB\Client ("mongodb://127.0.0.1/");
$db = $m->stores;
$collection = $db->storeinfo;
$pID = $VAT."/1";
$products = $collection->findOne(array("Products.pID" => $pID));
//var_dump($products);
foreach ($products as $product) {
echo $product;
}
But i have the Notice: Array to string conversion in
D:\xampp\htdocs\pricedoc\assets\includes\library.php
So i tried to convert it in json and search at json string but still nothing.
I tried many things that found on the internet but it seems that i have stuck. Is there a way to have the product's variables ?
example:
echo $product[Product.pID]; //output => 099360123/1
echo $product[Product.pName]; //output => Nike Air Force
Upvotes: 0
Views: 42
Reputation: 78994
I don't know MongoDB or what it returns, but you probably need to loop Products
. Given that JSON, they will be objects:
foreach ($products->Products as $product) {
echo $product->pID; //output => 099360123/1
echo $product->pName; //output => Nike Air Force
}
Or if arrays are returned:
foreach ($products['Products'] as $product) {
echo $product['pID']; //output => 099360123/1
echo $product['pName']; //output => Nike Air Force
}
Or some combination or the two. Your var_dump($products);
will show you if you uncomment it.
Upvotes: 1