Возврат результатов по значению объекта массива - PullRequest
0 голосов
/ 08 марта 2011

Я пытаюсь сделать эквивалент MongoDB, который должен возвращать всех пользователей по имени Джо Блоггс, у которых есть хотя бы один адрес, где город определен как Лондон:

db.users.findOne() {
    name : "Joe Bloggs",
    addresses : [{city: "London"}]
}

Использование Kohana 3 PHPмодуль Mango: https://github.com/Wouterrr/MangoDB

Я могу вернуть результаты, основанные на объектах верхнего уровня, например:

foreach(Mango::factory('users', array(
    'name' => 'Joe Bloggs',
))->load(FALSE) as $user) {
}

Но я не могу понять, как вернуть результаты, основанные на объектах в массивах,Я пробовал варианты:

foreach(Mango::factory('users', array(
    'name' => 'Joe Bloggs',
    'addresses' => array('city' => 'London'),
))->load(FALSE) as $user) {
}

и:

foreach(Mango::factory('users', array(
    'name' => 'Joe Bloggs',
    'addresses.$.city' => 'London',
))->load(FALSE) as $user) {
}

Я думаю, что я действительно близок, я просто застрял на последнем.

1 Ответ

1 голос
/ 08 марта 2011

Я не знаком с библиотекой, которую вы используете, но из оболочки вы просто сделаете это:

db.users.find({"name" : "Joe Bloggs", "addresses.city" : "London"});

Поэтому, скорее всего, вы ищете:

foreach(Mango::factory('users', array(
    'name' => 'Joe Bloggs',
    'addresses.city' => 'London',
))->load(FALSE) as $user) {
}
...