2015-02-04 1 views
0

MongoDB를 배우는 중입니다. 내가 뭘하려는 건 _id에 의해 BSON 문서에 대한 BSON 배열을 검색하는 것입니다. 여기C# 드라이버를 사용하여 BSON 배열 내에서 검색 및 업데이트

var courses = database.GetCollection<BsonDocument>("Course"); 
var query = new QueryDocument("_id", courseId); 

BsonDocument course = courses.FindOne(query); 
var exists = course.Contains("Lessons"); 
if (exists) 
{ 
     BsonArray lessons = course["Lessons"] as BsonArray; 
} 

너무 멀리있는 내 코드는 내가 특정 BSON 문서의 교훈 배열 내에서 검색하고 해당 문서를 업데이트 할 것입니다.

어떤 도움이 필요합니까?

+1

찾고있는 데이터를 검색 할 LINQ 쿼리를 쓸 수 있는지 일단? – mnemosyn

답변

0

Course 컬렉션에 저장된 문서를 모델링하기 위해 C# 클래스를 정의 할 수 있습니까? 그렇다면 데이터로 작업하는 것이 훨씬 쉬울 것이며 간단한 LINQ 쿼리를 사용하여 데이터로 작업 할 수 있습니다. 다음과 같이

Mongo c# driver - BsonDocument Object Model vs. Your Own Domain Classes

당신은 코스의 문서를 모델링 할 수 있습니다.

public class Course 
     { 
      public ObjectId Id { get; set; } 

      public IEnumerable<Lesson> Lessons { get; set; } 
     } 

public class Lesson 
     { 
      public ObjectId Id { get; set; } 

      public string Name { get; set; } 
     } 

당신은 Lesson 하위 문서에 포함 된 어떤 표현하기 위해 또 다른 C#을 엔티티를 정의해야합니다. 하지만 당신은 완료, 당신은 단지 훨씬 쉬울 것이다 당신은 왜 당신이 클래스를 사용하는 대신 BsonDocument와 함께 작동합니까

var collection = database.GetCollection<Course>("Course"); 
    var course = collection.AsQueryable().First(c => c.Id == id); 

    var mathLesson = course.Lessons.FirstOrDefault(l => l.Name == "Math"); 
    if (mathLesson != null) 
    { 
     mathLesson.Name = "AdvancedMath"; 
    } 

    collection.Save(course); 
관련 문제