0

たとえば、配列である「A」というグループがあります。

また、グループ「A」の中にある「B」という別のグループも配列です。

グループ「B」要素を見つけて更新したい。

jQuery のようなチェーンのようなクエリを実行しようとしました。

db.collection.findOne({"group":"A"}).findOne({"society":"B"})

このようなもの..

しかし、これは機能しません。しかし、要点は、グループ内のグループ要素を照会したいということです。

これを行うことに関する提案はありますか?

特にPHPの実装についてアドバイスを頂ければ大変助かります

4

2 に答える 2

2

たぶん私は何かを誤解していますが、何が問題なのですか:

db.collection.findOne({"group":"A", "society":"B"})

また、findOne は 1 つのドキュメントのみを返すことに注意してください。

于 2011-08-18T01:57:02.330 に答える
0

ドキュメントが次のようになっていると仮定します。

db.mycol.insert( {
    "_id": 1,
    "group": "A",
    "societies": [
        {"society": "A", "name": "Alpha" },
        {"society": "B", "name": "Beta" }
    ]
} );

次に、Mongo シェルで、クエリを使用して必要なドキュメントを取得できます。

var group = db.mycol.findOne( { "group": "A" } );

次に、クライアント側の JavaScript を使用して、フィールドをさらに絞り込みます。

var societyB = group.societies.filter(function (val) {
    return (val.society == "B");
} );

printjson(societyB);

PHP ドライバーでも同様のことができます。重要なのは、アクションを別々のステップで実行することです。まず、関心のあるドキュメントを取得します。次に、そのフィールドをフィルタリングして操作します。次に、それをデータベースに保存します。

于 2011-08-18T02:51:21.840 に答える