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

MongoDBAggregationで$lookupをINNERJOINとして使用するにはどうすればよいですか?

    $matchを追加するだけです 空のinventory_docsを持つドキュメントをスキップするパイプラインステージ 分野。それを達成する他の方法はありません。

    クエリ:

    db.getCollection('inventory').aggregate([
        {
            $lookup: {
                from: "orders",
                localField: "sku",
                foreignField: "item",
                as: "inventory_docs"
            }
        },
        {
            $match: {
                "inventory_docs": {$ne: []}
            }
        }
    ])
    

    結果:

    {
        "_id" : 1.0,
        "sku" : "abc",
        "description" : "product 1",
        "instock" : 120.0,
        "inventory_docs" : [ 
            {
                "_id" : 1.0,
                "item" : "abc",
                "price" : 12.0,
                "quantity" : 2.0
            }
        ]
    }
    
    {
        "_id" : 4.0,
        "sku" : "jkl",
        "description" : "product 4",
        "instock" : 70.0,
        "inventory_docs" : [ 
            {
                "_id" : 2.0,
                "item" : "jkl",
                "price" : 20.0,
                "quantity" : 1.0
            }
        ]
    }
    



    1. MongoDB-ドキュメント内の文字列の配列を照合するために集計フレームワークまたはmapreduceを使用します(プロファイル照合)

    2. MongoDBとAspCoreは、モデル全体ではなく、キーと値のペアのみを更新します

    3. RedisとMongoDB:知っておくべきこと

    4. Stackexchange.Redisのファイア・アンド・フォーゲットは配信を保証しますか?