Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中访问mongoDB中已过滤父字段的内部字段?_Php_Mongodb - Fatal编程技术网

如何在PHP中访问mongoDB中已过滤父字段的内部字段?

如何在PHP中访问mongoDB中已过滤父字段的内部字段?,php,mongodb,Php,Mongodb,我在mongoDB中收集了具有这种结构的文档: { _id: ObjectId("50f970caaa070bb8150000ae"), nombre: "Argentina", poblacion: 1000, provincias: [ { nombre: "Buenos Aires", gobernador: "Jorge Luis", cantMedicos: 2,

我在mongoDB中收集了具有这种结构的文档:

{ _id: ObjectId("50f970caaa070bb8150000ae"), nombre: "Argentina", poblacion: 1000, provincias: [ { nombre: "Buenos Aires", gobernador: "Jorge Luis", cantMedicos: 2, _id: ObjectId("50f970caaa070bb8150000a9") }, { nombre: "Catamarca", gobernador: "Rodrigo Neira", cantMedicos: 5, _id: ObjectId("50f970caaa070bb8150000aa") } ] } { _id:ObjectId(“50f970caaa070bb8150000ae”), 名称:“阿根廷”, 波布拉西翁:1000, 省:[ { 名称:“布宜诺斯艾利斯”, 戈伯纳多:“豪尔赫·路易斯”, 坎特梅迪科斯:2, _id:ObjectId(“50f970caaa070bb8150000a9”) }, { 名称:“卡塔马卡”, 戈伯纳多:“罗德里戈·奈拉”, 坎特梅迪科斯:5, _id:ObjectId(“50f970caaa070bb8150000aa”) } ] } 我想打印所有“省”的字段“gobernador”,其父项的“nombre”等于“阿根廷”。
但是我找不到在PHP中实现这一点的方法。

第一步是选择带有
{nombre:“阿根廷”}
via的所有文档。这将返回一个iterable,并允许您访问所有匹配的文档

每个文档都是一个数组,因此您可以访问适当的字段,就像上面评论中提到的Sammaye一样


您还可以选择在匹配文档中包含
find()
特定字段,如果您的文档非常大,并且您希望减少(a)从MongoDB传递到驱动程序的数据量和/或(b)处理返回文档所消耗的内存量,这将非常有用。查询投影通过第二个参数控制到
MongoCollection::find()
,并记录在前面的链接中。

您找不到方法<代码>$doc['provincias']['gobernador']将执行此操作,MongoDB将返回根文档结构,即使您告诉它不要,它也无法返回顶级字段。