Поиск в массиве MongoDB с помощью php

#php #mongodb

#php #mongodb

Вопрос:

итак, мой mongodb выглядит так:

 {
        "_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
}
 

Я пытаюсь выбрать данные с помощью php

 $options = ["typeMap" => ['root' => 'array', 'document' => 'array']];
$m = new MongoDBClient("mongodb://127.0.0.1/", [], $options);
//$m= new MongoDBClient ("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;
}
 

Но у меня есть уведомление: преобразование массива в строку в
D:xampphtdocspricedocassetsincludeslibrary.php

Итак, я попытался преобразовать его в json и выполнить поиск в строке json, но по-прежнему ничего.

Я перепробовал много вещей, которые нашел в Интернете, но, похоже, я застрял. Есть ли способ получить переменные продукта?

пример:

 echo $product[Product.pID];     //output => 099360123/1

echo $product[Product.pName];   //output => Nike Air Force
 

Комментарии:

1. Раскомментировать var_dump($products); . Что это показывает?

Ответ №1:

Я не знаю MongoDB или что он возвращает, но вам, вероятно, нужно выполнить цикл Products . Учитывая, что JSON, они будут объектами:

 foreach ($products->Products as $product) {    
    echo $product->pID;     //output => 099360123/1        
    echo $product->pName;   //output => Nike Air Force    
}
 

Или если возвращаются массивы:

 foreach ($products['Products'] as $product) {    
    echo $product['pID'];     //output => 099360123/1        
    echo $product['pName'];   //output => Nike Air Force    
}
 

Или какая-то комбинация или два. Ваш var_dump($products); покажет вам, если вы его раскомментируете.

Комментарии:

1. Большое вам спасибо!!