1. 程式人生 > 資料庫 >MongoDb C# 操作鍵值為Array物件的方法

MongoDb C# 操作鍵值為Array物件的方法

假如有一個班級Collection(Grade,Array Student),班級下有學生Student(Birthday,Sex,Name)

1、先定義一個fieldDefinition和updateDefinition

FieldDefinition<BsonDocument> fieldDefinition = "StudentList";
FilterDefinitionBuilder<BsonDocument> filterDefinitionZiBuilder = new FilterDefinitionBuilder<BsonDocument>();
FilterDefinition<BsonDocument> filterZi = filterDefinitionZiBuilder.And(
   filterDefinitionZiBuilder.Eq("Birthday", Convert.ToDateTime("2010-10-1")),
   filterDefinitionZiBuilder.Eq("Sex", "male")
);
FilterDefinition<BsonDocument> filterDefinition = filterDefinitionBuilder.And(
   filterDefinitionBuilder.Eq("Grade", 3),
   filterDefinitionBuilder.ElemMatch(fieldDefinition, filterZi));

2、插入一個學生方法如下(這裡構建的filterDefinition不需要ElemMatch那句話)

UpdateDefinitionBuilder<BsonDocument> updateDefinitionBuilder = new UpdateDefinitionBuilder<BsonDocument>();
var updateDefinition = updateDefinitionBuilder.AddToSet(fieldDefinition, item);
var result2 =database.GetCollection<SchoolClass>("schoolclass").UpdateOne(filterDefinition, updateDefinition);
string info2 = $"匹配到:{result2.ModifiedCount}條,更新:{result2.ModifiedCount}條";

3、更新學生生日方法

UpdateDefinitionBuilder<BsonDocument> updateDefinitionBuilder = new UpdateDefinitionBuilder<BsonDocument>();
var updateDefinition = updateDefinitionBuilder.Set("StudentList.$.Birthday", dateBirthday);
var result2 =database.GetCollection<SchoolClass>("schoolclass").UpdateOne(filterUpdateDefinition, updateDefinition);
string info2 = $"匹配到:{result2.ModifiedCount}條,更新:{result2.ModifiedCount}條";

其它類似操作仿照寫即可