我正在学习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文档并更新该文档。
任何帮助?
答案 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);