sql >> データベース >  >> NoSQL >> MongoDB

Mongo DBの配列内に存在するすべての一致する要素を取得するにはどうすればよいですか?

    JohnnyHKが言ったように、 MongoDBの回答:サブコレクション よく説明します。

    あなたの場合、集計は次のようになります。

    (注:最初の一致は厳密には必要ありませんが、パフォーマンス(インデックスを使用できます)とメモリ使用量(限られたセットで$ unwind)に関して役立ちます

    > db.xx.aggregate([
    ...      // find the relevant documents in the collection
    ...      // uses index, if defined on documents.x
    ...      { $match: { documents: { $elemMatch: { "x": 1 } } } }, 
    ...      // flatten array documennts
    ...      { $unwind : "$documents" },
    ...      // match for elements, "documents" is no longer an array
    ...      { $match: { "documents.x" : 1 } },
    ...      // re-create documents array
    ...      { $group : { _id : "$_id", documents : { $addToSet : "$documents" } }}
    ... ]);
    {
        "result" : [
            {
                "_id" : ObjectId("515e2e6657a0887a97cc8d1a"),
                "documents" : [
                    {
                        "x" : 1,
                        "y" : 3
                    },
                    {
                        "x" : 1,
                        "y" : 2
                    }
                ]
            }
        ],
        "ok" : 1
    }
    

    アグリゲート()の詳細については、http://docs.mongodb.org/manualを参照してください。 /applications/aggregation/




    1. MongoDB集約フレームワークで中央値を計算します

    2. NodejsでMongoDBデータベース接続を閉じるタイミング

    3. マングース:入力された値にアクセスできません

    4. mongodbでタイムスタンプを日付に変換する方法は?