MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách tra cứu $ với tham số đường ống &let trong C # (MongoDB.Driver 2.7.2)

Vì bạn không chỉ định một tài liệu ví dụ và ánh xạ lớp cụ thể, câu trả lời dưới đây sẽ sử dụng BsonDocument nhập dữ liệu mẫu và dữ liệu từ hướng dẫn sử dụng $ lookup:chỉ định nhiều điều kiện tham gia với tra cứu

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());
} 

Xin lưu ý rằng hỗ trợ $ lookup sử dụng PipelineDefinitionBuilder sắp có cho phiên bản 2.8.x. Để biết thêm thông tin, hãy xem CSHARP-2013




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cập nhật nhiều phần tử có giá trị khác nhau trong Mongoose

  2. Tầm quan trọng ngày càng tăng của MongoDB trong lĩnh vực khoa học dữ liệu

  3. Mongoose find (), làm thế nào để truy cập các tài liệu kết quả?

  4. Mongoose nhiều tìm kiếm đồng bộ để sử dụng lại ID đối tượng

  5. Tại sao MongoDB yêu cầu `duy nhất:true` để tạo một bộ sưu tập?