Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/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,我有一个名为users的集合。每个用户文档都有一个名为电话号码的嵌入文档 } "_id": ObjectId("4f2984b1af06e80418000000"), "User_FirstName": "Frank", "User_LastName": "Williams", "User_PhoneNumbers": [ {"Phone_Type": "Home","Phone_Number: "555-555-5555" },

我有一个名为
users
的集合。每个用户文档都有一个名为电话号码的嵌入文档

}
   "_id": ObjectId("4f2984b1af06e80418000000"),
   "User_FirstName": "Frank",
   "User_LastName": "Williams",
   "User_PhoneNumbers": [
                  {"Phone_Type": "Home","Phone_Number: "555-555-5555" },
                  {"Phone_Type": "Mobile","Phone_Number: "333-333-3333" }
                  ]
}
我正在尝试显示名为“Frank Williams”的用户的所有电话号码。我想使用一个循环返回结果(特定用户的所有电话号码):


我是mongodb新手,不知道如何查询嵌入式文档并让它返回该特定用户的所有嵌入式文档。我正在用php编写代码。谢谢您的帮助。

您最多只能返回整个
用户\u电话号码
数组。您不能从中挑选单个项目。(当然,我指的是常规查询。使用map reduce或即将推出的聚合框架,您将能够做到这一点)

此查询将返回此文档:

{
   "User_PhoneNumbers": [
              {"Phone_Type": "Home","Phone_Number": "555-555-5555" },
              {"Phone_Type": "Mobile","Phone_Number": "333-333-3333" }
            ]
}

然后在PHP中,您可以根据需要处理它

谢谢你的帮助。好的,我明白了,这就是在shell中运行查询的方式,但是您知道谁在php中运行查询吗$游标=$collection->find(数组(“\u id”=>ObjectId(“4f2984b1af06e804180000”)、数组(“用户电话号码”)?我试过了,但没用。谢谢。@user982853:我相信这是
$collection->find(数组(\u id”=>ObjectId(“4f2984b1af06e804180000”)、数组(“用户电话号码”=>1))
我不想麻烦你,但当我尝试循环时,它不会返回任何东西。我是否做错了什么:$cursor=$collection->find(数组('u id=>ObjectId('4f2984b1af06e804180000”)、数组(“User_PhoneNumbers”=>1”);foreach($cursor as$key){echo$key['Phone\u Number'];}?>这会抛出错误:未定义索引:C:\wamp中的用户\u电话号码…可能,我不知道。您应该学习如何调试代码。
db.collection.find({"_id": ObjectId("4f2984b1af06e80418000000")}, 
                   {"User_PhoneNumbers": 1, _id: -1});
{
   "User_PhoneNumbers": [
              {"Phone_Type": "Home","Phone_Number": "555-555-5555" },
              {"Phone_Type": "Mobile","Phone_Number": "333-333-3333" }
            ]
}