Драйвер C# 2.0 Mongodb UpdateOneAsync
`
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;}
}
`
Как добавить / добавить идентификатор курсора в список курсов (который может быть нулевым в первый раз) объекта Student
PS: Я знаю, как установить поле, используя команду ниже. Я надеюсь, что он находится на аналогичных линиях для вышеупомянутой проблемы
await StudentCollection.UpdateOneAsync(a => a.StudentId == studentId, Builders<Student>.Update.Set( a => a.IQ,90));
2 ответа:
Как вы уже обнаружили, C# - код для использования $addToSet выглядит следующим образом:
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);
Однако $addToSet не будет работать, если член CourseList был сохранен в коллекции как null. Сервер требует, чтобы существующее значение для $addToSet было массивом (это может быть пустой массив).
Самое простое решение-просто хранить пустой список для CoursesList вместо null, когда курсов нет.