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

パイプラインを使用して$lookupし、C#でパラメーターを許可する方法(MongoDB.Driver 2.7.2)

    特定のクラスマッピングとサンプルドキュメントを指定しなかったため、以下の回答ではBsonDocumentを使用します。 マニュアルのデータの入力と例 $ lookup:lookupで複数の結合条件を指定します

    BsonArray subpipeline = new BsonArray();
    
    subpipeline.Add(
        new BsonDocument("$match",new BsonDocument(
            "$expr", new BsonDocument(
            "$and", new BsonArray { 
                 new BsonDocument("$eq", new BsonArray{"$stock_item", "$$order_item"} ), 
                 new BsonDocument("$gte", new BsonArray{"$instock", "$$order_qty"} )
                 }  
            )
        ))
    );
    
    var lookup = new BsonDocument("$lookup", 
                     new BsonDocument("from", "warehouses")
                                 .Add("let", 
                                     new BsonDocument("order_item", "$item")
                                                 .Add("order_qty", "$ordered"))
                                 .Add("pipeline", subpipeline)
                                 .Add("as", "stockdata")
    );
    
    var results = collection.Aggregate()
                            .Match(new BsonDocument("_id", 1))
                            .AppendStage<BsonDocument>(lookup).ToEnumerable();
    
    foreach (var x in results)
    {
        Console.WriteLine(x.ToJson());
    } 
    

    より表現力豊かな $lookup> PipelineDefinitionBuilder を使用する バージョン2.8.xで提供されます。詳細については、CSHARP-2013 を参照してください。




    1. ScaleGridホスティングは、自動シャーディングを備えた高可用性Redis™クラスターのサポートを追加します

    2. StackExchange.Redisタイムアウト

    3. NodeJS + ExpressJS+RedisStoreセッションは未定義です

    4. LaravelMongoDBライブラリ'jenssegers/laravel-mongodb'hasMany関係が機能していません