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

MongoDBを使用して、複数のアレイを1つの巨大なアレイに集約します

    $filterを使用できます および $setUnion / $concatArrays ドキュメントを連結してフィルタリングする演算子。また、 $ifNullを使用する必要があります 欠落しているフィールドを空の配列に置き換える演算子。

    db.collection.aggregate([
        { "$project": { 
            "web_images": { 
                "$filter": { 
                    "input": { 
                        "$setUnion": [ 
                            { "$ifNull": [ "$pictures", [] ] },
                            { "$ifNull": [ "$logos", [] ] }
                        ]
                    }, 
                    "as": "p", 
                    "cond": { "$eq": [ "$$p.web", "true" ] } 
                } 
            } 
        }},
        { "$match": { "web_images.0": { "$exists": true } } }
    ])
    



    1. デフォルトでMongoDBシェルできれいに印刷

    2. nosqlとの多対多の関係(mongodbおよびmongoose)

    3. MongoIdオブジェクトの配列を文字列の配列に変換します

    4. テキストフィールドの一致と集計の組み合わせ