MongoDB - 获取嵌入项目列表

时间:2012-02-02 21:39:22

标签: php mongodb

我有一个名为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”的用户的所有电话号码。我想使用一个返回结果的循环(特定用户的所有电话号码):

Home, 555-555-5555
Mobile, 333-333-33333

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

1 个答案:

答案 0 :(得分:1)

最多只能返回整个User_PhoneNumbers数组。你不能从中挑选个别物品。 (当然,我正在谈论常规查询。使用map-reduce或即将推出的聚合框架,你将能够做到这一点。)

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" }
            ]
}

然后在PHP中你可以随意处理它。