如何通过解析对象列表来更新Mongodb

时间:2013-01-16 22:20:24

标签: c# mongodb

我正在使用c# 其中一个mongo db文件就是这样的结构

Class QuestionData{
    public Guid Id { get; set; }
    public string Type { get; set; }
    public List<NotesQuestion> Question { get; set; }
}

所以我想做更新。我将更新写成如下:

var update = Update.Set("Question", data.Question);

'data'是一种QuestionData。 但现在它说数据的“无效论证”。问题。 如果我将其更改为

  var update = Update.Set("Question", data.Question.ToJson());

没问题。但我不想将其保存为json字符串。 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用我自己的模型类

internal class QuestionData
{
  [BsonId] public Guid Id { get; set; }
  [BsonElement("type")] public string Type { get; set; }
  [BsonElement("qnotes")] public QuestionNote[] QuestionNotes { get; set; }
}

[BsonNoId] internal class QuestionNote
{
  [BsonElement("q")] public string Question { get; set; }
  [BsonElement("n")] public string Note { get; set; }
}

你可以覆盖整个bson数组,如:

// get client, database, collection ...
var col = Database.GetCollection<QuestionData>("questions");
// QuestionNote[] toModifyWith = ... 
var udb = Builders<QuestionData>.Update;
var fdb = Builders<QuestionData>.Filter;
var ur = await col.UpdateManyAsync(fdb.Empty, udb.Set(x => x.QuestionNotes, toModifyWith ));