जैसा कि आपने किसी विशेष वर्ग मानचित्रण और उदाहरण दस्तावेज़ों को निर्दिष्ट नहीं किया है, नीचे दिए गए उत्तर में BsonDocument
. का उपयोग किया जाएगा मैनुअल से टाइप और उदाहरण डेटा $लुकअप:लुकअप के साथ कई जुड़ने की शर्तें निर्दिष्ट करें
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