MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak $ lookup z parametrami potoku i let w C# (MongoDB.Driver 2.7.2)

Ponieważ nie określiłeś mapowania konkretnej klasy i przykładowych dokumentów, poniższa odpowiedź użyje BsonDocument typ i przykładowe dane z podręcznika $lookup:określ wiele warunków przyłączenia za pomocą wyszukiwania

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

Pamiętaj, że obsługa bardziej wyrazistych $lookup przy użyciu PipelineDefinitionBuilder nadchodzi dla wersji 2.8.x. Aby uzyskać więcej informacji, zobacz CSHARP-2013




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zapytanie MongoDb near/geonear ze zmienną odległością

  2. wstaw tablicę do mongodb za pomocą pymongo

  3. Nie można wyświetlić tylko punktów z określonego zakresu (kółka) za pomocą funkcji .getBounds() (Ulotka)

  4. Jak odzyskać nową wartość po aktualizacji we wbudowanej tablicy?

  5. Grupa MongoDB i odejmowanie wartości z różnych dokumentów