2017-06-28 6 views
2

ich die folgenden Dokumente in meiner Sammlung habe:C# Mongo abrufen Unter Dokument

{ 
    "Target_Year" : 2017, 
    "Target_Month" : 6, 
    "Performance" : [ 
     { 
     "Report_Day": 1, 
     "First_Level_Superior" : "WS66", 
     "Second_Level_Superior" : "SB23" 
    }, 
    { 
     "Report_Day": 2, 
     "First_Level_Superior" : "CN4", 
     "Second_Level_Superior" : "WS66" 
    }, 
    { 
     "Report_Day": 3, 
     "First_Level_Superior" : "", 
     "Second_Level_Superior" : "TN27" 
    }] 
} 

Hier finden Sie mein aktueller Filtercode:

var builder = Builders<BsonDocument>.Filter; 
var filterMain = builder.Eq("Target_Year", "2017") & builder.Eq("Target_Month", "6") & builder.Eq("Performance.Report_Day", "1"); 
var result = mongoDB.Performance.Find(filterMain).FirstOrDefault(); 

Was muß ich eigentlich abzurufen ist nur:

{ 
     "Report_Day": 1, 
     "First_Level_Superior" : "WS66", 
     "Second_Level_Superior" : "SB23" 
    } 

OR

{ 
    "Target_Year" : 2017, 
    "Target_Month" : 6, 
    "Performance" : [ { 
     "Report_Day": 1, 
     "First_Level_Superior" : "WS66", 
     "Second_Level_Superior" : "SB23" 
    }] 
} 

Jede Hilfe wird wirklich sehr geschätzt.

Antwort

1

Sie benötigen ein "projection" mit den positional $ operator hinzuzufügen, um die angepassten Array-Element aus den Abfragebedingungen zu verweisen:

var builder = Builders<BsonDocument>.Filter; 
var filterMain = builder.Eq("Target_Year", "2017") & builder.Eq("Target_Month", "6") & 
    builder.Eq("Performance.Report_Day", "1"); 
var project = Builders<BsonDocument>.Projection.Include("Performance.$"); 

var result = mongoDB.Performance.Find(filterMain).Project(project).FirstOrDefault(); 

Die $ den „Index“ des Arrays darstellen, die mit in dem Abfrageausdruck angepasst wurden:

builder.Eq("Performance.Report_Day", "1"); 
+0

Kühl. Es hat mein Problem gelöst !!! –

+0

@CheeMun Gut. Mit Ihren neu erworbenen [Rufprivilegien] (https://stackoverflow.com/help/privileges) können Sie auch abstimmen :) –

Verwandte Themen