搜索&使用C#驱动程序在BSON阵列中更新

时间:2015-02-04 06:57:54

标签: c# mongodb

我正在学习MongoDB。我想要做的是通过_id搜索BSON数组以获取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 个答案:

答案 0 :(得分:0)

您可以定义一个c#类来为Course集合中存储的文档建模吗?如果是这样,那么使用数据会更容易,您可以使用简单的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; }
        }

您需要定义另一个c#实体来表示Lesson子文档中包含的内容。 但是,一旦完成,您就可以编写Linq查询来搜索您要查找的数据

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