在MongoDB中,我有一个包含这种结构的文档的集合:
{
"_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 。我需要删除所有具有scores.type =“homework”的所有文档的score.score得分数组元素。
在示例中将是得分数组的第4个元素(“得分”:69.09840625499065)。
我认为我必须按ID分组,排序限制为1 ,然后使用方法 DeleteMany ,但我无法获得代码工作
我无法解决问题。我正在尝试但不起作用的代码是下一个:
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();
我的课程:
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; }
}