2014-04-14 28 views
0

返回全體子文檔Arrary我需要讓所有的子文檔陣列從課程班,其中User.UserId =什麼和Courses.Status =活躍等從MongoDB的

Public Class User 
    Public Property UserId As String 'this is unique so i would like to index this, unless you think otherwise 
    Public Property CourseData() As List(Of Courses) ' 
    Public Property Groups As List(Of String) 
    Public Property BU As List(Of String)  
End Class 

Public Class Courses 
    Public Property id As String 'this can be dynamic 
    Public Property description As String 
    Public Property CompletionDate As String 
    Public Property Hours As String 
    Public Property Status As String 
End Class 

用vb.net,我試了幾種方法,我只希望課程返回都有一個狀態=「活動」將被傾倒入Ienumberable

我試過(_users是用戶的集合)(_uid是傳遞給它的變量)

Return _users.FindAs(Of User)(Query.And(query.EQ("LearningHours.Status", "Active"), (Query.EQ("UserId", _uid)))) 
Return _users.FindAs(Of User)(Query.And(query.EQ("LearningHours.Status", "Active"), (Query.EQ("UserId", _uid)))).SetFields("Courses", "1") 

Return _users.FindAs(Of Courses)(Query.And(query.EQ("LearningHours.Status", "Active"), (Query.EQ("UserId", _uid)))) 
Return _users.FindAs(Of Courses)(Query.And(query.EQ("LearningHours.Status", "Active"), (Query.EQ("UserId", _uid)))).SetFields("Courses", "1") 

似乎沒有工作,他們通常回來與類用戶或類用戶和班級課程,但課程領域是空白

我什至試圖linq ..這個作品 - 但只返回1行結果

Dim uc = From _u In _users.AsQueryable(Of User)() 
    Where _u.userid = _userid _ 
    Select _ 
CourseID = _u.Courses.Where(Function(c) c.State = "Submitted").Select(Function(c) c.CourseId)(0), _ 
CourseDescription = _u.Courses.Where(Function(c) c.State = "Submitted").Select(Function(c) c.CourseDescription)(0) 

似乎很容易做到,只是不能得到它

回答

0

得到它,我想我是在想這

一旦我聲明類的一個實例,我可以通過子文檔迭代

Dim _u as new User 
For Each c In _user.Courses.Where(Function(cs) cs.Status= "Active").Select(Function(cs) cs) 
console.writeline(c.id & c.description & "so on...") 
Next