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

MongoDB-結果セット内の内部配列のコンテンツをフィルタリングする

    MongoDBの集約フレームワークを使用できます 。

    コレクションに;

    のようなドキュメントがある場合
    {
     "URL": "www.stackoverflow.com",
     "TAGS": [
             {"NAME": "question", "VOTES": 3},
             {"NAME": "answer", "VOTES": 5},
             {"NAME": "problem", "VOTES": 2}
             ]
    }
    

    配列の一部の要素を除外したい場合は、集計サンプルを使用できます。

    db.sof_table.aggregate
    ([
    {$unwind:'$TAGS'}, 
    {$match:{'TAGS.NAME':{$in:['answer','question']}}},
    {$group:{_id:'$URL',TAGS:{$push:'$TAGS'}}}
    ])
    

    これは結果になります;

    {
        "result" : [
            {
                "_id" : "www.stackoverflow.com",
                "TAGS" : [
                    {
                        "NAME" : "question",
                        "VOTES" : 3
                    },
                    {
                        "NAME" : "answer",
                        "VOTES" : 5
                    }
                ]
            }
        ],
        "ok" : 1
    }
    

    期待どおりの結果です。



    1. MongoDBで$unionWithを使用するときに重複を削除する

    2. RedisでのSCANとKEYSのパフォーマンス

    3. Redisの日付をRに変換する方法

    4. Redis管理パネル