簡體   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