0

私はMongoDBと同等のことをしようとしています。これは、市がロンドンとして定義されているアドレスを少なくとも1つ持つ、JoeBloggsと呼ばれるすべてのユーザーを返す必要があります。

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) {
}

私は本当に近いと思います私は最後に立ち往生しています。

4

1 に答える 1

1

私はあなたが使用しているライブラリに精通していませんが、シェルからあなたは単にこれを行うでしょう:

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

おそらく、あなたが探しているのは次のとおりです。

foreach(Mango::factory('users', array(
    'name' => 'Joe Bloggs',
    'addresses.city' => 'London',
))->load(FALSE) as $user) {
}
于 2011-03-08T10:17:01.123 に答える