Arrays 删除被删除文档中的数组元素
在MongoDB中,我有一个具有以下结构的文档集合:Arrays 删除被删除文档中的数组元素,arrays,mongodb,mongodb-query,mongodb-.net-driver,Arrays,Mongodb,Mongodb Query,Mongodb .net Driver,在MongoDB中,我有一个具有以下结构的文档集合: { "_id" : 18, "name" : "Verdell Sowinski", "scores" : [ { "type" : "exam", "score" : 62.12870233109035 },
{
"_id" : 18,
"name" : "Verdell Sowinski",
"scores" : [
{
"type" : "exam",
"score" : 62.12870233109035
},
{
"type" : "quiz",
"score" : 84.74586220889356
},
{
"type" : "homework",
"score" : 81.58947824932574
},
{
"type" : "homework",
"score" : 69.09840625499065
}
]
}
我正在使用.NET。我需要删除分数最低的分数数组元素。所有有分数的文档的分数。type=“家庭作业”
在本例中,将是分数数组的第4个元素(“分数”:69.09840625499065)
我建议我必须按Id分组,排序限制为1,然后使用方法删除多个,但我无法使代码正常工作
我解决不了这个问题。下一个代码是我正在尝试但不起作用的代码:
var db = client.GetDatabase("school");
var col = db.GetCollection<Student>("students");
var filter = new BsonDocument("scores.type", "homework");
var myresult = await col
//.Find(filter)
.Aggregate()
.Unwind(x => x.Scores)
.Group(new BsonDocument { { "_id", "$_id" },
{ "minimo", new BsonDocument("$min", "$Scores.score") } })
.Sort(new BsonDocument("minimo", -1))
.Limit(1)
.ToListAsync();
var db=client.GetDatabase(“学校”);
var col=db.GetCollection(“学生”);
var filter=新的BsonDocument(“scores.type”、“家庭作业”);
var myresult=wait col
//.查找(筛选器)
.Aggregate()
.放松(x=>x.分数)
.Group(新的BsonDocument{{{{u id',“$\u id}),
{“minimo”,新的BsonDocument(“$min”,“$Scores.score”)})
.Sort(新的BsonDocument(“minimo”,-1))
.限额(1)
.ToListAsync();
我的班级:
public class Student
{
public int _id { get; set; }
public string Name { get; set; }
public List<Score> Scores { get; set; }
}
public class Score
{
public string Type { get; set; }
public double Mark { get; set; }
}
公共班级学生
{
公共int_id{get;set;}
公共字符串名称{get;set;}
公共列表分数{get;set;}
}
公开课成绩
{
公共字符串类型{get;set;}
公共双标记{get;set;}
}
您能展示您迄今为止的尝试吗?这基本上就是您需要的:MongoDB大学问题?是的,这是一个MongoDB大学问题MongoDB&.NET。我将尝试最后一个建议。我认为删除数组元素是必要的,使用$pull代替$push。我修改了我的答案,添加了一段代码(错误的代码,我无法让它工作)。有什么想法吗?