繁体   English   中英

使用 C# .net 在 mongodb 中的其他列表中按 ID 删除项目

[英]Delete a item by ID in list inside other list in mongodb using C# .net

我有一个像大学这样的结构,有一个课程列表。 班级有学生名单。 我为 mongodb 中的 3 个实体制作了 CRUD,一切正常,除了学生 object 中的删除。

我有一个像这样的 json

{
  "id": "u01",
  "classes": [
    {
      "id": "c01",
      "students": [
        {
          "id": "s01",
          "name": "Ana"
        },
        {
          "id": "s02",
          "name": "Jonh"
        }
      ]
    }
  ]
}

我需要使用 dot.net 拉 id S02 并尝试使用 pullFilter

    var filter = Builders<University>.Filter.And(Builders<University>.Filter.ElemMatch(doc => doc.Classes, c => c.Id == "c01"));
    var update = Builders<University>.Update.PullFilter(c => c.Classes.First().Students, item => item.Id == "s02");
    collection.FindOneAndUpdateAsync(filter, update);

我没有例外,但没有工作。 怎么了? 泰寻求帮助

为了从与过滤器匹配的第一个 class 中删除学生,您将在MongoDB中指定字段,如下所示:

classes.$.students

在 C# 中,您可以通过使用 -1 的索引来模拟这一点,例如:

var update = Builders<University>
  .Update
  .PullFilter(c => c.Classes.ElementAt(-1).Students, item => item.Id == "s02");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM