微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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}条";

其它类似操作仿照写即可

  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐