MongoDB - получить список встроенных элементов - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть коллекция под названием 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" }
                  ]
}

Я пытаюсь отобразить все телефонные номера пользователя по имени «Фрэнк Уильямс».Я хотел бы использовать цикл, который возвращает результаты (все номера телефонов для определенного пользователя):

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

Я новичок в mongodb и не знаю, как запросить встроенный документ и получить еговсе встроенные документы для этого конкретного пользователя.Я кодирую в php.Спасибо за любую помощь.

1 Ответ

1 голос
/ 03 февраля 2012

В лучшем случае вы можете вернуть только весь массив User_PhoneNumbers.Вы не можете выбрать отдельные предметы из него.(Я говорю о регулярных запросах, конечно. С помощью map-Reduce или предстоящей Aggregation Framework вы сможете это сделать).

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 вы можете справиться с этим так, как хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...