删除embebbed文档中的数组元素

时间:2016-06-24 17:03:17

标签: arrays mongodb mongodb-query mongodb-.net-driver

在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; }
    }

0 个答案:

没有答案