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

MongoDBフィルターマルチサブドキュメント

    次の集計パイプラインを使用して、目的の結果を取得します。

    var pipeline = [
        {
            "$match": {
                "name": "Andre",
                "fruits.active": true,
                "cars.active": true
            }
        },
        { "$unwind": "$fruits" },
        { "$unwind": "$cars" },
        {
            "$match": {            
                "fruits.active": true,
                "cars.active": true
            }
        },
        { 
            "$group": {
                "_id": {
                    "_id": "$_id",
                    "name": "$name"
                },
                "cars": { "$addToSet" : "$cars" },
                "fruits": { "$addToSet" : "$fruits" }
            }
        },
        {
            "$project": {
                "_id": 0,
                "name": "$_id.name",
                "cars": 1,
                "fruits": 1
            }
        }    
    ]
    
    m_object.aggregate(pipeline)
            .exec(function (err, result) {
                if (err) {
                    console.log(err);
                    return;
                }
                console.log('result');
            });
    

    または、 集約パイプライン を使用できます。 ビルダーは次のとおりです:

    m_object.aggregate()
            .match({
                "name": "Andre",
                "fruits.active": true,
                "cars.active": true
             })
            .unwind("fruits")
            .unwind("cars")
            .match({
                "fruits.active": true,
                "cars.active": true
             })
            .group({
                "_id": {
                    "_id": "$_id",
                    "name": "$name"
                },
                "cars": { "$addToSet" : "$cars" },
                "fruits": { "$addToSet" : "$fruits" }
            })
            .project({
                "_id": 0,
                "name": "$_id.name",
                "cars": 1,
                "fruits": 1
            })
            .exec(callback);
    



    1. docker-mongodbでdjangoを実行するように作成します

    2. Mongodb再帰クエリ

    3. コレクション内の選択したドキュメントの位置を取得します[mongoDB]

    4. SpringBoot Elasticache JedisMovedDataException:移動