MongoDb C# 操作键值为Array对象的方法-8
假如有一个班级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}条";
4、删除Array中某个学生的方法
比如:删除生日为2010-10-1学生
UpdateDefinitionBuilder<BsonDocument> updateDefinitionBuilder = new UpdateDefinitionBuilder<BsonDocument>(); var updateDefinition = updateDefinitionBuilder.Pull(fieldDefinition, new BsonDocument { { "Birthday",Convert.ToDateTime("2010-10-1")} }); var result2 = MongoDBHelper.GetYeWuCollection<BsonDocument>("schoolclass").UpdateOne(filterUpdateDefinition, updateDefinition); string info2 = $"匹配到:{result2.ModifiedCount}条,更新:{result2.ModifiedCount}条";
其它类似操作仿照写即可
本博客是个人工作中记录,更深层次的问题可以提供有偿技术支持。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。