按数组对象值返回结果

时间:2011-03-08 10:05:04

标签: php mongodb kohana kohana-3 mangodb

我正在尝试相当于MongoDB,它应该返回所有名为Joe Bloggs的用户,这些用户至少有一个地址,其中City被定义为伦敦:

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 个答案:

答案 0 :(得分:1)

我不熟悉您正在使用的库,但是从shell中您只需执行此操作:

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

所以最有可能的是,你要找的是:

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