public class Student
{
    public long StudentId {get; set;}
    public string Fname {get; set;}
    public string Lname {get; set;}
    public List<ObjectId> CoursesList {get; set;}
    public int IQ {get;set;}
}

public class Courses
{
    [BsonId]
    public ObjectId Id { get; set; }
    public string CourseNumber{get; set;}
    public string CourseName{get; set;}
}

如何向学生对象的类(class)列表(首次为空)添加/添加类(class)者ID

PS:我知道如何使用以下命令设置字段。我希望它在上述问题的相似之处
await StudentCollection.UpdateOneAsync(a => a.StudentId == studentId, Builders<Student>.Update.Set( a => a.IQ,90));

最佳答案

您已经发现,使用$ addToSet的C#代码为:

var filter = Builders<Student>.Filter.Eq(s => s.StudentId, studentId);
var update = Builders<Student>.Update.AddToSet(s => s.CoursesList, courseId);
var result = await collection.UpdateOneAsync(filter, update);

但是,如果CourseList成员以null存储在集合中,则$ addToSet将不起作用。服务器要求$ addToSet的现有值是一个数组(它可以是一个空数组)。

最简单的解决方案是仅为CoursesList存储一个空列表,而在没有类(class)时存储一个空列表。

关于C#驱动程序2.0 Mongodb UpdateOneAsync,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29638767/

10-12 00:29
查看更多