1

PHP で MongoDB foreach クエリをコーディングする方法は?

PHP でiterator_to_arrayを使用して同じMONGODB QUERYをコーディングする必要があります。このクエリを PHP で実行する方法がわかりません。

今、私はこれに行き詰まりました。私はいくつかの例で私のデータを与えました。

使用されたMONGOクエリ:

db.getCollection('DRUM').find({'CODE': 'XXYYZZYY'}).forEach(
function(doc)
{
    print(doc.COLLECTION.DAY);
});

実際のデータベース レコード:

{
   "CODE" : "XXYYZZYY",
   "COLLECTION" : {
      "DAY" : {
         "2017-06-05" : {
            "id" : 565455
         },
         "2017-06-15" : {
            "id" : 565445
         }
      },
      "MONTHLY" : {
         "2017-06-01" : {
            "id" : 564444
         },
         "2017-05-01" : {
            "id" : 565455
         }
      }
   },
   "success" : true
}

期待される出力:

{
   "CODE" : "XXYYZZYY",
   "COLLECTION" : {
      "DAY" : {
         "2017-06-05" : {
            "id" : 565455
         },
         "2017-06-15" : {
            "id" : 565445
         }
      }
   },
   "success" : true
}
4

1 に答える 1

0

PHP から同じクエリを直接実行することはできません。最初に mongo からレコードをフェッチしてから、その結果を反復処理する必要があります。

これは、PHP7 mongodb ドライバーと同じコードです。

//connection object
$connection = new \MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");

$filter = ['CODE' => 'XXYYZZYY'];
$projection['projection'] = ["COLLECTION.DAY" => 1,"CODE" => 1];

$query = new \MongoDB\Driver\Query($filter,$projection);
$cursor = $connection->executeQuery('DB_NAME.DRUM', $query);
foreach($cursor as $key => $row) {
    print_r($row); //your expected output
}
于 2018-01-31T10:02:57.017 に答える