Mongodb不用php获取嵌入文档

问题描述:

这里是它没有嵌入文档的代码。Mongodb不用php获取嵌入文档

<?php 
    include 'vendor/dbcon.php'; 
     $documentlist = $state -> find(['s_name' => 'West Bengal'], 
      ['projection' => ['_id' => 0, 'places._id' => 1]]); 

    foreach ($documentlist as $doc) { 
    echo $doc["places._id"] . "\n"; 
    } 
?> 

ERROR shows: Notice: Undefined index: places._id in C:\xampp\htdocs\Education\Home.php on line 130

如果代码是这样的:

foreach ($documentlist as $doc) { 
     echo $doc["_id"] . "\n"; 
     } 

then ERROR:: Notice: Undefined index: _id in C:\xampp\htdocs\Education\Home.php on line 130

数据库结构:MongoDB的

db.state.find().pretty() 

{ 
     "_id" : "state1", 
     "s_name" : "West Bengal", 
     "places" : [ 
       { 
         "_id" : "Bardhaman", 
         "pin" : "754216" 
       }, 
       { 
         "_id" : "Jalpaiguri", 
         "pin" : "754217" 
       } 
     ] 
} 

请帮助我,我怎么能打印所有places._id列表(来自Bardhaman,Jalpaiguri)

+0

您不包括'_id'。看到? '_id'=> 0' –

+0

我的不好。 “地方”当然是一个阵列。您需要在文档中对其进行迭代。 –

投影没什么问题,它只是访问的符号是PHP符号,而不是PHP中的“Dot notation”。当然还有 “地方” 是一个数组,所以你需要遍历:

$documentlist = $state->find([],[ '_id' => 0, 'places._id' => 1 ]); 

    foreach ($documentlist as $doc) { 
    foreach($doc['places'] as $place) { 
     echo $place['_id'] . "\n"; 
    } 
    } 

产地:

Bardhaman 
Jalpaiguri 
+0

谢谢你的工作 – Nakul23