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)
答
投影没什么问题,它只是访问的符号是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
您不包括'_id'。看到? '_id'=> 0' –
我的不好。 “地方”当然是一个阵列。您需要在文档中对其进行迭代。 –